进程管理
进程是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。大部分进程是服务产生的,还有一些进程是系统内核产生的。
进程管理有三个如下作用,其中判断服务器健康状态比较重要,其次是查看进程,最后杀死进程用的比较多。
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
查看进程
linux系统提供ps命令和pstree命令,用于查看系统进程。ps命令输出系统中进程的多个维度信息,pstree命令输出系统中进程的继承关系。
-
ps aux
查看系统中所有进程,使用BSD操作系统格式。特别地,该命令参数没有短杠。
-
ps -le
查看系统中所有进程,使用linux标准命令格式。
-
选项
- -a:显示终端的所有进程
- -u:显示进程的归属用户及内存使用情况
- -x:显示没有控制终端的进程
- -l:显示详细信息
- -e:显示所有信息,跟-A作用一致
-
输出结果(以aux为例)
- USER: 该进程由哪个用户产生的
- PID:进程的ID号
- %CPU:该进程占CPU资源的百分比。占用越高,进程越耗费资源;
- %MEM:该进程占物理内存的百分比。占用越高,进程越消耗资源;
- VSZ:该进程占虚拟内存大小。单位KB
- RSS:该进程占物理内存大小。单位KB
- TTY:该进程在哪个终端中运行。tty1-tty7表示本地控制台,其中tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
- STAT:进程状态。常见的有:1、R:运行;2、S:休眠(绝大数进程都处于休眠状态)。3、T:停止状态。4、s:包含子进程。5、+:位于后台
- START:该进程的启动时间,注意不要和TIME连在一起解读。
- TIME:该进程占用CPU的运算时间,注意不是系统时间。
- COMMAND:产生此进程的命令名。
查看健康状态
查看系统健康状态实质上是统计linux的内存、CPU等计算资源的使用情况,通过使用top命令输出当前系统的资源利用情况。
top命令该命令从上往下输出三部分内容,第一部分包括五行统计数据,第二部分为用于输出用户交互命令的命令行,第三部分为部分类似ps输出结果的可排序数据。
-
选项
- -d:指定top命令更新频率,默认3秒。该命令较消耗资源,不建议频率过高。
- -b:使用批处理模式输出。一般和“-n”合用。批处理的作用在于允许使用输出重定向,top命令的输出内容写入到一个文本里。“top -b -n 1 > top.log”
- -n:指定top命令执行次数。一般和“-b”合用。
-
输出第一部分,平均负载、CPU空闲占比、内存空闲大小、交换区空闲区大小这四个信息影响系统的稳定运行。
- 第一行:系统信息,包括当前系统时间、系统运行时间、登录用户数量、系统在1分钟、5分钟、15分钟的平均负载。
- 第二行:进程(Task)信息,包括当前系统的总进程数、正在运行的进程数、休眠的进程数、正在停止的进程数、僵尸进程数。其中,僵尸进程有时需要手动结束。
- 第三行:CPU状态,包括系统模式百分比、**系统空闲百分比(%id)**等8个维度的百分比。其中,系统空闲百分比一般不能低于20%,否则系统卡顿。
- 第四行:内存(Mem)状态,包括总大小、已使用、空闲、缓冲区(buffers)大小。其中,缓冲区加速数据的写入,辅助内存向磁盘写数据
- 第五行:交互区(swap)状态,包括总大小、已使用、空闲、缓存区(cache)大小。其中,缓存区加速数据的读取,辅助Cpu从内存读数据
-
输出第二部分,用户可输入交互命令,这些命令可控制第三部分的排序方式。
- ?/h:显示交互模式的帮助
- P:以CPU使用率排序,默认排序方式。
- M:Y以内存使用率排序。
- N:以PID排序
- q:退出top.也可使用ctrl + c
-
输出第三部分,内容结构类似ps命令输出结果。内容数量为部分值。
杀死进程
在系统管理中,杀死进程是最后的解决办法。杀死进程的命令包括kill 、killall、pkill.
- kill [信号] PID
- 结束单一进程。该命令只能使用PID
- 信号 信号可用英文 ,也可用数字。默认是15,表示正常结束进程。其他常用的如下:
- -9 :强制结束
- -1:平滑重启进程
- killall [选项] [信号] 进程名
- 按照进程名结束进程。
- 选项
- -i: 交互式,询问是否要杀死某个进程,有几个同名进程就询问几次。
- -I:忽略进程名大小写
- 信号 含义同kill的信号一样
- pkill [信号] [选项] 进程名
- 按照进程名终止进程
- 选项
- -t:按照终端号踢出用户。
- 踢出用户的一般步骤:1、使用w命令查看当前登录用户,获取用户的终端号TTY。 2、使用pkill -t -9 pts/o 即可踢出用户。
修改进程优先级
在修改进程优先级时,首选需要获取进程的信息。使用“ps aux”命令输出的结果中不包含进程的优先级信息,需要使用"ps -le"。“ps -le”输出结果的PRI、NI两列表示进程的优先级。其中,PRI表示OS动态调整的进程优先级,用户不能调整。NI是用户可以调整的优先级。
- nice [选项] 命令
- 该命令只能调整**新执行命令(不存在的进程)**的NI值。
- 由于命令的运行是以进程的形式存在,因此nice命令的的后面跟的是命令。
- 选项
- -n :NI值,给命令赋予的NI值。例如“ nice -n -5 service httpd start”
- renice [优先级] PID
- 该命令修改的是已经存在的进程的NI值
- 例如:renice -10 2323
修改优先级注意事项:
- NI的取值范围是-20 ~ 19
- 普通用户只能调整自己的进程,且只能调高不能调低。调整范围是 0 ~19。
- root用户可以调整任何用户的进程,且范围为NI的取值范围。
- PRI(new) = PRI(old) + NI。这个公式说明用户调整的优先级会影响进程的优先级。