一、管理进程状态
- 进程运行起来: (程序, 通过一推命令+参数+执行的程序=进程)
- 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号。当然除了kill、还有killall,pkill。
- 对于kill而言
数字编号 | 信号含义 | 信号翻译 |
---|---|---|
1 | SIGHUP | 加载服务的配置,主进程不会重新启动,但是子进程会被干掉,重新拉起新的子进程 |
9 | SIGKILL | 强制杀死,谨慎使用。 |
15 | SIGTERM | 正常停止进程信号,如果进程还有任务在处理,那么则处理完成后,进程会自动退出。 |
yum -y install vsftpd
systemctl start vsftpd
ps aux|grep vsftpd
#发送重载信号,例如 vsftpd 的配置文件发生改变,希望重新加载
kill -1 9160
#发送停止信号,当然vsftpd 服务有停止的脚本 systemctl stop vsftpd
kill 9160
#发送强制停止信号,当无法停止服务时,可强制终止信号
kill -9 9160
- Linux系统中的killall、pkill命令用于杀死指定名字的进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall、pkill把这两个过程合二为一,是一个很好用的命令。
#例1、通过服务名称杀掉进程
pkill nginx
killall nginx
#例2、使用pkill踢出从远程登录到本机的用户,终止pts/0上所有进程, 并且bash也结束(用户被强制退出)
pkill -9 -t pts/0
二、管理后台进程
- 后台进程的概念:
通常进程都会在终端前台运行,一旦关闭终端,进程也会随着结束,那么此时我们就希望进程能在后台运行,就是将在前台运行的进程放入后台运行,这样及时我们关闭了终端也不影响进程的正常运行。 - 早期的时候大家都选择使用&符号将进程放入后台,然后在使用jobs、bg、fg等方式查看进程状态,但太麻烦了。也不直观,所以我们推荐使用screen。
#1.安装
yum install screen -y
#2.开启一个screen窗口,指定名称
screen -S study_test
#3.在screen窗口中执行任务即可
#4.平滑的退出screen,但不会终止screen中的任务。注意: 如果使用exit 才算真的关闭screen窗口
ctrl+a+d
#5.查看当前正在运行的screen有哪些
screen -list
There is a screen on:
1111.study_test (Detached)
1 Socket in /var/run/screen/S-root
#6.进入正在运行的screen
screen -r study_test
screen -r 1111
三、进程的优先级
-
什么优先级
优先级指的是优先享受资源,比如排队买票时,军人优先、老人优先。等等 -
系统中如何给进程配置优先级?
在启动进程时,为不同的进程使用不同的调度策略。
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程不倾向于让出CPU。 最高的优先级低 正常 高 +20 0 -20
-
nice指定程序的优先级。语法格式 nice -n 优先级数字 进程名称
#1.开启vim并且指定程序优先级为-5
nice -n -5 vim &
[1] 98417
#2.查看该进程的优先级情况
ps axo pid,command,nice |grep 98417
98417 vim -5
- renice命令修改一个正在运行的进程优先级。语法格式 renice -n 优先级数字 进程pid
- 生产案例、Linux出现假死,怎么办,又如何通过nice解决?
四、系统平均负载
- 平均负载是指单位时间内,系统处于 可运行状态R 和 不可中断状态D 的平均进程数,也就是平均活跃进程数,
平均负载其实就是单位时间内的活跃进程数。 ( 可运行状态R + 不可中断状态D )
平均负载要看的是三个值,不是一个。 - 可运行状态和不可中断状态是指:
- 可运行状态进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们ps 命令看到处于 R 状态的进程。
- 不可中断进程,(你做什么事情的时候是不能打断的?) 系统中最常见的是等待硬件设备的 I/O 响应,也就是我们 ps 命令中看到的 D 状态(也称为 Disk Sleep)的进程。
例如: 当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
场景描述
- CPU 密集型进程:使用大量 CPU 计算会导致平均负载升高,此时这两者是一致的; ( 视频的转码 加密 计算圆周率 )
- I/O 密集型进程:等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
- 大量的 CPU 进程调度:会导致平均负载升高,此时的 CPU 使用率也会比较高。
一般排除进程故障的步骤
- uptime看看负载的情况 ( 超过了 cpu的核心 )
- top看是cpu的使用率高 还是 wa等待高 还是内核态占用cpu高 、软中断高 、nice优先级进程占用cpu、
- top看是哪个进程
- 追踪这个进程的情况。
- 看看是否存在异常日志。