引导过程:Linux系统的开机过程
- 开机自检(BIOS):Linux主机开机后,根据主板BIOS中的设置,对CPU内存,显卡,键盘等设备进行初步检测,检测内容为查找这些设备是否存在。
- 检测成功后,根据预设的启动顺序进行系统控制权的移交,一般情况下移交到本机的硬盘中。
- 想要使用到U盘启动或光驱启动时,需要在BIOS中更改设置。
- 找到硬盘后,对硬盘进行初步检测,检测没问题,移交系统的控制权到硬盘。
- 硬盘中有MBR引导,MBR引导:磁盘分区表,记录了系统中磁盘分区的索引,从而找到磁盘的分区位置。Linux系统会找到第一个硬盘的第一个扇区,识别系统的版本和操作系统的个数。接着根据引导信息将控制权移交给启动菜单(grub菜单)。
- grub菜单:统一启动加载器,是一个使用最为广泛的多系统引导器程序。会显示出当前有几个系统可以供用户选择,根据用户的选择,再进行系统控制权的移交,移交到选择系统的内核文件。centos7使用的grub2在/boot/grub2/grub.cfg中。
- 系统控制权移交到内核后,开始加载linux内核。内核在/boot/目录下。
- 内核文件是一个预先编译好的二进制可执行文件,介于各种硬件资源和系统程序之间,它的作用是系统资源的分配与调度。调度完之后,会将需要用到的资源和程序加载到内存当中
- 内核加载完毕后,最后一次系统控制权移交,到达systemd(centos7的初始化方式,之前是init初始化)。
- systemd开始进程初始化,加载内存当中的程序,以并行的方式加载运行。最终等待用户登录。
- systemd现在是centos7初始化方式的原因:可以并行执行;init只能串行执行,速度慢。
systemd的管理方式
systemd是管理linux系统的进程和系统服务的管理器
- 支持并行
- 可以设置开机自启,自动启动服务
- 可以在进程运行期间动态地调整进程参数和资源限制
- 解决启动程序的依赖关系,对服务的状态进行管理:
- start 开启
- stop 关闭
- restart 重启
- status 查看进程状态
- enable 开机自启
- disable 关闭开机自启
- reload 重新加载(进程的配置文件)
- 控制单元,systemd按照单元对进程进行控制,常见单元类型:
- service 对进程进行控制 #主要使用的控制方式
- socket 通信套接字,提供端口号服务,对进程间的端口号进行控制
- 控制命令:
- systemctl stop/start/restart 等等
- 对于进程控制的日志都在/var/log/messages中,用 tail -f 动态查看
- 系统的运行级别:
-
0 关机
-
1 单用户模式,一般用于维护时使用,急救模式
-
2-4 字符串界面
-
5 图形化界面
-
6 重启
-
工作中一般只有字符串界面,init 后面跟上数字可以切换系统的运行级别;runlevel 可以查询系统的运行级别。比如说这样:
N表示之前没有进行过系统运行级别的切换,如果是数字,则表示之前的运行级别是该数字表示的级别。
进程和计划任务管理
进程:正在运行的代码就是程序
服务:进程提供的特定功能
程序:是一串没有运行的代码
进程和进程的关系:
父进程和子进程:systemd进程是linux的第一个进程,也是所有linux进程的父进程
父进程先启动,再启动子进程,父进程给子进程分配资源,让子进程能够正常运行
子进程先结束,父进程回收完子进程的资源之后,父进程才会结束
父进程如果先结束,子进程就会成为僵尸进程。
查看进程的命令:ps -aux
a 显示终端上所有的进程,包括其他用户的进程
u 列出进程的用户
x 显示进程的详细信息

user 进程所属的用户
pid 进程的身份标识,id号,唯一。
%CPU 进程占用CPU的百分比
%MEM 进程占用物理内存的百分比
VSZ 进程使用的虚拟内存量,单位KB,虚拟内存是系统预设的用于缓解物理内存不足的压力的内存
RSS 进程占用物理内存的量,单位KB
TTY 启动进程的终端名,?表示系统自启,不是从终端启动
STAT 进程的状态
S 可被唤醒的休眠状态
R 进程正在运行
D 一直处于休眠状态的进程
T 停止状态,可能是在后台暂停,或者进程处于调试状态
Z 僵尸进程
s 该进程包含子进程
< 该进程处理的优先级高
N 该进程处理的优先级低
l 进程有多个线程
线程是进程功能的执行者
+ 表示该进程位于前台运行
START 进程触发启动的时间
TIME 进程实际使用CPU运行的时间
COMMAND 进程的启动命令
ps -elf:也是查看进程的方式,同样是静态查看
e 显示系统内的所有进程信息
l 详细展示进程信息
f 显示完整进程信息

详细内容为:
F:内核分配给进程的系统标记
S:STAT的简写,进程的状态
UID:进程所属的用户
PID:进程的ID号,唯一,不重复
PPID:前面pid号对应的父进程号
C:进程在当前的生命周期内的CPU利用率
PRI:进程的优先级,数字越大,优先级越低
NI:谦让值,决定优先级的大小(了解)
ADDR:进程在内存中的地址(了解)
SZ:假如进程被唤醒,需要交换空间的大致大小(了解)
WCHAN:如果该进程处于睡眠状态,则显示睡眠中的系统函数名(了解)
STIME:进程启动时的时间
TTY:启动该进程的终端,?代表系统自启
TIME:进程运行时累计使用CPU的时间
CMD:进程的启动命令
top:

12:10:02 是当前时间,42 min表示已经使用的时间,2 users表示当前有两个用户在使用
load average:0.00,0.01,0.05 分别是1分钟,5分钟,15分钟内的系统平均负载
系统负载,单位时间内系统处理任务的平均数
Tasks:目前的进程总体情况
%CPU(s):按下数字1会显示所有CPU的信息,有几个CPU显示几个
us:用户占用CPU的百分比
sy:内核占用的百分比
ni:优先级调度占用的百分比
id:系统空闲CPU的百分比(★)
wa:磁盘读写性能,用 iostat 命令可以专门查看磁盘的读写性能
hi:一分钟内CPU的使用率
si:五分钟内CPU的使用率
st:十五分钟内CPU的使用率
SHR:共享内存使用大小。其他指标都和前面一样
c键可以按照CPU的大小进行排序,从大到小排
什么是僵尸进程?
父进程先结束,还存在的子进程就会变成僵尸进程
子进程结束的时候,父进程已经不存在,而且父进程也没有收回子进程的资源,那么子进程也会成为一个僵尸进程
僵尸进程占用的系统资源很少,单个僵尸进程甚至可以忽略不计
面试题:僵尸进程该怎么处理?
答案是只有重启,僵尸进程无法用kill强制结束。因为kill只是传递信号,kill -9告诉进程你需要强制结束,立即结束,最终是由进程自己来终止运行的。
如何后台运行并查看程序?
后台运行:在命令结尾处加一个 &
查看命令:jobs 查看后台运行的所有进程,jobs -r则是仅查看正在运行的后台程序,jobs -p显示所有后台进程的id号
定时任务
crontab命令:
-e 创建定时任务
-u 指定定时任务的执行用户
-l 查看所有的定时任务
crontab -e -uroot 后进入一个编辑器,编辑器内需要按照以下格式书写:
* * * * * 任务命令
这五颗星的位置代表的是 分 时 日 月 周
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7(0和7都是星期天)
*:表示时间范围内的任意时间。
,:表示不连续的多个时间点,例如:1,3,5表示没1,3,5的时间单位
- :表示连续的时间段
/ :表示时间频率,例如 */10 表示每10个时间单位
例题:
每天早上8点30执行任务:30 8 * * * 任务命令
每月1号上午10点10分 20分 30 分 分别执行一次任务:10,20,30 10 1 * * 任务命令
每月1号上午10点20分到40分都执行任务:20-40 10 1 * * 任务命令
如何删除定时任务?
crontab -r 最好不要使用。会删掉所有定时任务。
crontab -e 进入编辑器后删除想要删除的定时任务。
本文详细介绍了Linux系统的开机自检过程,包括BIOS检测、MBR引导、grub菜单选择、内核加载和systemd的进程及服务管理,同时涵盖了定时任务的设置和管理。
844

被折叠的 条评论
为什么被折叠?



