1. Linux的学习价值
- Linux是现代化应用程序交付的首选平台,无论是部署在裸机,虚拟化还是容器化环境
- 公司内部服务(TCE、Faas、SCM)统一使用Debian Linux系统
- 熟悉Linux基础指令,就可以熟悉运维前端常用服务,如Nginx,Node.js
2. Linux为什么选择企鹅作为Logo
企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界的任何一个国家,所以Linux选择企鹅作为标志,其含义也在表明:开源的Linux为全人类共同所有,任何公司无权将其私有,也就是大家可以在任何场合公开使用Linux系统
3. 计算机硬件
1. 计算机由五大基本单元
- 控制器
控制器的作用:顾名思义就是指挥控制计算器其他部件运行工作的部件
- 运算器
运算器的作用:主要作用是来进行我们的算数运算和逻辑运算,常规意义下我们会将控制器和运算器组成我们所说的CPU单元
- 存储单元
存储单元分为外存和内存:
外存:外存比如我们的磁盘,光驱,都是属于外存
内存:电脑的运行内存
- 输入单元
输入单元的作用:输入单元如我们的鼠标,键盘,都是输入单元
- 输出单元
输出单元的作用:输出单元比如显示器,音响,就是输出单元
2. 五大基本单元的工作方式
计算机通过输入设备,输入指令,如键盘 / 鼠标输入,然后计算机会通过控制器、运算器、存储器之间相互配合工作,将我们工作的结果通过输出设备输出显示
4. 操作系统
1. 操作系统介绍
操作系统用于管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
简单理解:
操作系统就是一个承上启下的作用,承上就是在我们操作系统之上,可以运行我们的应用程序,启下,就是在我们操作系统之下,可以通过我们的计算机硬件配合去做一些事情
总结来说,计算机操作系统为我们提供了两大能力,管理计算机资源和提供用户接口
- 管理计算机资源
比如:处理器管理,存储器管理,设备管理,文件管理
- 提供用户接口
比如:命令接口、图形用户接口、程序接口
我们常见的操作系统,如:MacOs,Linux,Windows,Android,鸿蒙Os
2. 操作系统启动流程
- 基于BIOS 和 基于UEFI
BIOS启动流程:
- BIOS启动
- BIOS自检
- BootLoader 操作系统引导程序
- OS (指的是相应的操作流程)
UEFI启动流程
- UEFI启动
- BootLoader
- OS
现如今主流的启动方式是UEFI启动
- 操作系统如何做到在电脑通电后进入操作启动流程?
可以简单的理解为BIOS或者UEFI是固化在电脑主板上的一段程序,在电脑通电之后会固定执行响应这一段执行
3.BIOS启动和UEFI启动的区别
可以简单的理解为UEFI启动方式是BIOS启动方式的升级版本,因为BIOS启动的时候会进行一系列的自检,这就会导致我们的运行速度变慢,而UEFI是直接优化了这一段程序,使得启动的速度会更快,还有就是BIOS无法启动2.2T以上容量的磁盘
5. 查询Linux版本
1.查询内核版本
- 方法一
uname -a
- 方法二
cat /proc/version
2. 查询发行版本
cat /etc/os-release
3. 发行版本和内核版本的区别
- 内核版本就是由Linux作者团队来维护的Linux最核心的部分
- 发行版本就是在内核版本的基础上加上了许多应用程序的版本,如:CentOs,Debian,Ubantu
6. Linux系统应用领域
主要的应用领域
- IT服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究与软件研究
因为Linux是完全开源的,所以在Linux的基础上可以进行开发,和办公
7. Linux基本组成
Linux系统一般有4个主要部分
- 内核
一般是操作系统的内核,如线程管理,内存管理
- shell
命令解释器,输入一些命令,以至于可以使用Linux内核中的一些资源
- 文件系统
负责管理文件管理,将用户的文件存储到磁盘上
- 应用程序
应用程序最好理解,比如在Linux所使用的VSCode,就是应用程序
8.查询进程命令
1. 查询某个应用程序的进程
ps -ef | grep <应用名称>
如:要查询nginx进程使用如下命令:
ps -ef | grep nginx
2. 查询某个进程的详细信息
top -p <进程ID>
可以查到CPU占用等信息,查询1432进程的信息:
top -p 1432
3. 关闭指定进程
kill <进程IP>
# 如关闭1432进程
kill 1432
4. 显示所有进程的动态列表
top
9. 进程调度
1.系统中运行的程序远远大于CPU的核数,那么Linux系统是如何实现同时运行这么多的程序的?
通过进程调度
进程调度是指操作系统按某种策略或者规则选择进程占用CPU进行运行的过程。
简单理解为:
CPU会通过某种策略,在一个线程执行多少时间后去执行另外的线程以此切换执行,因速度非常快,所以给人的感觉是同时运行着,当然这种策略远不止像描述的这样简单,这里只是做一个简单的比喻
2. 进程调度的原则
- 一个CPU核在同一时间,只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言,进程调度使用轮询方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
10.Linux的文件系统
文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件
在Linux中,一切皆文件
在Linux中,文件系统是采用树状的目录结构,最上层目录是根目录( / )
1. 虚拟文件系统
问题?
- Linux中有这么多不同的文件系统,如何实现对用户统一调用接口的?
Linux在中间层做了一个接口抽象(VFS 虚拟文件系统)
* 对应层提供一个标准文件操作接口,如读取,写入
* 对文件系统提供一个标准文件接入接口
2. 查询文件系统类型命令
# 可以查看到文件系统磁盘空间利用率
df -T
3. 文件的基本操作
- 查看文件夹下的内容
ls # 可以遍历出文件夹的所有文件列表
- 创建文件夹
mkdir <文件夹名称>
- 移动文件
mv <demo> <home> # 将demo 文件/ 文件夹移动到home的位置,home移动时可以修改文件名
- 删除文件
rm -r <文件名>
- 创建文件
touch <文件名>
- 复制文件
cp <demo1> <demo1_bak> # 将demo1文件复制一份并修改名称为demo1_bak
11.Linux用户权限
在Linux中用户包括两部分
用户账户
- 普通用户账户:在系统中进行普通作业(普通用户账户)
- 超级用户账户:在系统中对普通用户和整个系统进行管理(root)
组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
1. 查看用户信息命令
w # 这个命令可以查看当前登录的用户
groups # 查看当前用户所属的组
# 一个用户可以属于多个组
查看用户的uid信息
id <用户名>
2. 用户文件权限
对于用户文件权限中有三个概念
所有者:文件的所有者,拥有所有权
所在组:文件所有者所在的组
其他人:除文件所有者及所在组外的其他人
每个用户对用文件都有不同权限,包括:R(读-4) W (写-2)X(执行-1)
如此图:
文件的类型为:文件夹
所有者拥有:读写执行的权限
所在的组拥有:读和执行的权限
其他人拥有:读和执行的权限
3. 创建用户
sudo useradd <用户名> # 创建一个用户
sudo passwd <用户密码> # 创建用户登录密码
4. 切换用户
su <用户名>