Linux进程管理(下)-day24
管理进程状态、管理后台进程、进程的优先级、系统平均负载
一、管理进程状态
如果我们想要结束一个进程,就需要用到命令 kill(主要)、pkill、killall
1.结束进程我们需要用到信号(以怎样形式结束)
kill -l 查看系统所支持的信号
![]()
常用的信号有三个
1 ------ SIGHUP ----- 通常用来重新加载配置文件 (主进程不会重新启动,子进程会结束但新的子进程会重新启动)
9 ------ SIGKILL ----- 强制杀死进程
15 ---- SIGTERM ---- 终止进程(默认信号)
2.命令的使用
[root@10 ~]# systemctl start httpd
[root@10 ~]# ps -ef |grep httpd
root 9343 1 5 16:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9344 9343 0 16:16 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9345 9343 0 16:16 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9346 9343 0 16:16 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9347 9343 0 16:16 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9348 9343 0 16:16 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 9350 7738 0 16:16 pts/0 00:00:00 grep --color=auto httpd
# kill 命令 ,默认信号是 15
[root@10 ~]# kill 9344 # kill 后面跟进程ID
[root@10 ~]# kill -9 9344 #强制杀死进程
[root@10 ~]# kill -15 9344 #重新加载(先杀后启)
# pkill、killall 命令,命令后面跟进程名,默认信号也是 15
[root@10 ~]# pkill httpd
[root@10 ~]# killall httpd
#可以使用 pkill 结束从远程登录本机的用户的所有进程
[root@10 ~]# pkill -9 -t pts/0
二、管理后台进程
通常我们的进程都会在前台运行,当我们关闭终端,进程也会随之停止;但我们把进程放在后台运行,即使我们关闭了终端,进程也不会停止,这就是后台的功能。
命令:screen
#1.安装
[root@10 ~]# yum install screen -y
#2.开启一个screen窗口,指定名称
[root@10 ~]# screen -S one
#3.
退出窗口,但不会停止进程 ctrl+a+b
退出窗口,并停止进程 exit
#4.查看当前正在运行的 screen
[root@10 ~]# screen -list
There is a screen on:
9360.one (Detached)
1 Socket in /var/run/screen/S-root.
#5.进入正在运行的 screen
[root@10 ~]# screen -r one # one == 9360
三、进程的优先级
优先级就是优先享受资源,例如各种会员,军人优先,等等。
在启动进程时,为不同的进程使用不同的调度策略。
我们用 nice(NI) 来表示
nice 值越高,优先级越低,例如:+20
nice 值越低,优先级越高,例如:-20
1.我们可以用 top 和 ps 来查看进程的优先级
①使用 top 可以查看 nice(NI)优先级。NI :实际nice级别,默认为0;PR:显示nice值,NI+20
②使用ps查看进程优先级(用到过滤)
[root@10 ~]# ps axo pid,command,nice |grep sshd
7501 /usr/sbin/sshd -D 0
7734 sshd: root@pts/0 0
8555 sshd: root@pts/1 0
9424 grep --color=auto sshd 0
2.nice 指定程序的优先级
#在一个窗口中执行
[root@10 ~]# nice -n -20 vim file.txt
#在另一个窗口中查看其优先级
[root@10 ~]# ps aux |grep vim
root 9456 2.4 0.2 149748 5484 pts/0 S<+ 18:01 0:00 vim file.txt
root 9458 0.0 0.0 112724 980 pts/1 S+ 18:01 0:00 grep --color=auto vim
[root@10 ~]# ps axo pid,command,nice |grep 9456
9456 vim file.txt -20
9460 grep --color=auto 9456 0
3.renice 命令修改一个正在运行的进程优先级
语法格式 renice -n 优先级数字 进程pid
#1.查看sshd进程优先级
[root@10 ~]# ps axo pid,command,nice |grep sshd
7501 /usr/sbin/sshd -D 0
7734 sshd: root@pts/0 0
8555 sshd: root@pts/1 0
9470 grep --color=auto sshd 0
#2.对该进程设定优先级
[root@10 ~]# renice -n -20 7501
#3.重新登录终端,子进程会继承父进程优先级
四、系统平均负载
1.什么是平均负载
平均负载是指单位时间内,系统处于可运行状态(R)和不可中断状态(D)的平均进程数,也就是平均活跃进程数。与CPU使用率并没有直接关系
2.平均负载多少时合理
最理想的状态是每个CPU上都刚好运行这一个进程,这样每个CPU都得到了充分利用。
在评判平均负载时,首先要知道系统有几个CPU。
3.平均负载的三个值,怎么看?
①三个值要结合起来看,相差不大,说明系统负载很平稳
②把系统的平均负载监控起来,然后根据更多的历史数据,判断负载变化的趋势
4.平均负载与CPU使用率的关系
平均负载,不仅包括正在使用的CPU的进程,还包括等待CPU和等待I/O的进程。
CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。
比如:
①CPU密集型进程,使用大量CPU计算会导致平均负载升高,此时两者是一致的。
②I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高。
③大量的CPU进程调度会导致平均负载升高,此时CPU使用率也会较高。解决过程:
1.uptime看看负载的情况 ( 超过了 cpu的核心 )
2.top看是cpu的使用率高 ;还是 wa等待高 ; 还是内核态占用cpu高 、软中断高 、nice优先级进程占用cpu、
3.top看是哪个进程
4.追踪这个进程的情况。
5.看看是否存在异常日志。