Linux学习之路——进程管理与监控

1进程管理与监控

1.1Linux系统启动过程

​ Linux操作系统在开机后要经历一下步骤才能完成整个启动流程:BIOS自检、系统引导、内核引导和启动、init系统初始化

1.1.1 BISO自检

​ BIOS( Basic Input/ Output System),基本输入输出系统,可以看作是一个永久保存在ROM中的一个软件,早期的BIOS一旦写入ROM就不可修改,现在则可以使用专用擦写程序擦除后重新写入。
​ BIOS有两部分功能:POST和 Runtime服务。

POST(Power-on self test)

​ 即我们通常所说的自检,主要负责检测外围关键设备(CPU、内存、显卡、键盘、鼠标等)是否正常。

Runtime

​ 主要根据设备列表按照BIOS启动顺序来启动系统,如硬盘启动时会去读取并执行硬盘第一个扇区的代码。

1.1.2 系统引导

​ 系统引导指的是将操作系统内核装入内存并启动系统的过程,这需要引导程序(如 GNU GRUB、LILO,这里主要讲解GRUB引导程序)来完成,GRUB包含两段主引导程序,其实BIOS会先引导第一段主程序,这部分程序保存在MBR中,执行第一段主引导程序时会查找并执行第二段主引导程序,这部分程序一般位于/boot/grub。

MBR( Master Boot Record,主引导记录)
​ 位于磁盘的头部(第一个扇区),大小为512B,包含三部分:主引导程序(446B)、硬盘分区表(64B,DPT,Disk Partition Table)、硬盘有效标志(2B,一般为55 AA).
​ MBR被BIOS读取执行后会识别文件系统并査找和加载第二段主引导程序。

GRUB( Grand Unified Bootloader,多系统启动程序)
​ MBR引导程序会执行査找到的第二段主引导程序,即GRUB程序,位于/んoot/grub中,然后GRUB根据/boot/grub/grub.conf文件查找 Kernel信息,然后开始加载Kernel程序,当 Kernell程序被检测并加载到内存中后,GRUB会将控制权交给 Kernel程序

1.1.3 内核引导和启动

​ 内核( Kernel)是 Linux系统最主要的程序。内核程序是以压缩格式存储在硬盘中,内核程序拿到控制权后,开始在内存中解压缩内核文件,然后挂载根文件系统,再装在第一个进程,执行/sbin/init,之后将控制权移交给init程序

1.1.4 int系统初始化

1.1.4.1 读取/etc/ inittab文件

​ 主要用于 Linux操作系统初始化操作,根据 inittab文件设置的动作(定义了系统的默认运行级别)进行脚本的执行,第一个被执行的脚本为/etc/frc.d/rc. sysinit,这个文件是真正的 Linux操作系统初始化脚本。

​ rc. sysinit脚本任务主要包括:激活udev和 Selinux、根据/etc/ sysctl.conf文件来设定内核参数、设定系统时钟、装载硬盘映射、启用交换分区、设置主机名、根文件系统检测并以读/写方式重新挂载根文件系统、激活RAID和LVM设备、启用磁盘配额、根据 fstab检査并挂载其他文件系统、清理过期的锁和PID文件

1.1.4.2 执行/etc/rc.d/rc脚本

​ 该文件定义了服务的启动顺序是先K(Kill)后S(Start),S表示的是启动时需要开启的服务内容,K表示关机时需要关闭的服务内容。具体的每个运行级别的服务状态放在etc/ rc.d/ rc *,d( *= 0~6,代表7个运行级别)目录下,所有文件均指向/etc/init.d下相应的文件符号链接。

​ rc. sysinit通过分析/ etc/ inittab文件来确定系统的启动级別别,然后才执行/ etc/ rc.d/ rc*.d下的文件。

注意:真正的启动相关目录和脚本均在/etc/rc.d目录下etc相应目录权限都是指向此目录的链接。

1.2系统运行级别

​ 不同的系统运行级别所启动的服务不同,这些级别定义在/etc/ /inittab中,init会根据定义的级别去执行相应目录下的脚本

注意:标准的运行级别是3(多用户即字符界面)或5(桌面即图形界面),千万不能设置运行级别为0和6,否则系统无法正常启动

在rhel8版本中, inittab文件被废弃了,使用 systemctl来管理运行级别

1.3进程和作业

1.3.1 相关概念

1.3.1.1 进程

​ 进程是操作系统中一种较为抽象的概念,用来表示正在运行的程序,所以,进程不是程序,而是由程序产生的用来描述程序动态执行的过程。一个程序对应多个进程,一个进程也可以调用多个程序。

​ Linux系统中,由内核来完成对所有进程的控制与调度,内核中存储的进程的重要信息如下

1.3.1.2 作业

​ Linux统中正在执行的一个或多个相关的进程可以组成一个作业,一个作业可以启动多个进程,作业按照工作方式不同,可分为两类

前台作业:运行于前台,用户可与进程交互

后台作业:运行于后台,向终端输出结果,不能交互

1.3.2 进程的状态

进程有七种状态:就绪、运行、等待、挂起、终止、僵死、休眠

1.3.3 进程的分类

进程可分为两类:实时进程和非实时进程

1.3.3.1 实时进程

​ 指响应时间尽可能短且不会被优先级进程阻塞的进程,如视频、音频以及机器人控制进程等。

1.3.3.2 非实时进程
1.3.3.2.1 交互式进程

​ 需要与用户进行交互,花费较多时间来等待用户键盘和鼠标操作,但在接受了输入后,就要必须很快被唤醒,否则用户会感觉系统反应迟钝,如文本编辑器和图形图形应用程序等。

1.3.3.2.2 批处理进程

​ 不需要与用户进行交互,常在后台运行,由于批处理进程不必很快响应,因此常受到调度程序的怠慢,如数据库搜索引擎等。

1.3.4 进程的优先级

​ 进程优先级指在 Linux中,按照CPU资源分配的先后顺序形成的不同进程的队列,一般而言,优先级高的进程有优先执行的权利。进程的优先级是可以改变的。
​ 启动进程的用户或管理员用户可以修改进程的优先级,而普通用户只能调低优先级,超级用户可调高/调低优先级


Linux中的优先级用英文字母nice表示,取值为-20-19取值越低,优先级越高,默认为0

1.3.5 进程的属性

​ 一个进程包含多个属性参数,这些参数决定进程的编号、被执行的先后顺序及访问资源的多少,其中包括:

进程标识(PID)

​ Linux进程为每个进程分配了一个标识其身份的ID,称为PID。每一个PID有不同权限,系统通过此D来判断该进程的工作执行方式。

父进程标识(PID)

​ Linux系统中,进程间是有相关性的。用户登录 Linux后,内核会首先自主的创建几个进程,再由这些进程提供的接口去创建新的进程。创建其他进程的进程叫父进程,用标识PID标识,被创建的进程叫子进程。进程是由父进程通过通过“复制”的方式得来的。

1.4进程管理命令

1.4.1 进程与作业命令

1.4.1.1 jobs命令

功能:用于显示当前所有的作业

语法:jobs[参数]

参数:-pl
-p:仅显示进程号
-l:同时显示进程号、作业号、作业状态等。

切换作业使用以下命令:

fg命令:fg [作业编号]/将作业切换到前台运行

bg命令:bg [作业编号]/将作业切换到后台运行

【注意】可以使用ctrl+z组合键将前台程序转入后台停止运行,也可以使用ctr+C终止前台程序的运行。

1.4.1.2 ps命令

功能:用于显示进程的状态(过去时间的一次性快照)

语法:ps[参数]

参数:-ael
-a:显示当前终端所有进程

-e:无状态显示所有进程

-l:显示进程详细

-x:显示非控制终端的进程

参数:-w | r | -t 终端名 | -u[用户名]

-w:显示完整信息,防止被截断

-r:显示运行中的进程

-t 终端名:显示对应终端的进程

-u [用户名]:显示对应用户的进程

常用参数组合:

ps-w //加宽显示进程信息(不会被截断)

ps-au//显示较详细的进程信息

ps-auw //显示所有包含其他使用者的进程

1.4.1.3 kiIl命令

功能:用于终止正在运行的进程或作业
语法:ki[选项J[进程信号]进程号
选项:-l
-l:显示系统定义的进程信号

kilI -9 $ (ps- ef grep hnlinux //杀死 linux用户的进程

kil -9 程序名 //一次性杀死所有指定程序名的进程

1.4.1.4 nice命令

功能:用于设置将要启动的进程的优先级(-20-19)

语法:nice -n [优先级值] 命令

选项:-n

-n[优先级值]:设置进程优先级

nice -n 19 vI 。。。 //创建vi进程,其运行级别为19

1.4.1.5 renice命令

功能:用于设置正在运行中的进程的优先级(-20~+19)和指定用户(组)的优先级

语法: renice [优先级值] [选项]

选项:-p<进程号> | u<用户名> | g < GID >

-n<进程号>:设置进程优先级

-u<用户名>:设置指定用户的进程的优先级

-g < GID >:设置指定用户组的进程的优先级

renice +12 -p 3302 //设置3302号进程的优先级为12

1.4.2 系统监控命令

1.4.2.1 who命令

功能:用于查看当前己登录的所有用户

语法:who [选项]

选项:-mH

-m:显示用户名、终端及时间信息

-H:显示标题

1.4.2.2 top命令

功能:用于查看进程状态

语法:top [选项]

选项:-b

-b: --batch -mode,批处理模式,指分批输出信息,一般与参数n搭配使用。

选项:i -d < delay> | -n < number> | -p < pid >
i:不显示闲置(idle)或无用( zombie)的进程
d< delay>:设置信息更新的间隔时间(单位为秒)
-n< number>:设置信息的更新次数,显示完后退出

1.4.2.3 free命令

功能:用于査看内存与交换分区信息

语法:free [选项]

选项:-mts

-m:单位为MB

-t:动态显示刷新的频率,单位 秒

-s:增加显示内存与交换分区的总和信息

1.5 小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangpi_hero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值