Linux进程管理 day22
1.管理进程状态
2.管理后台进程
3.进程的优先级
4.系统平均负载
一、管理进程状态
昨天主要学习了进程(正在运行的程序)、进程与程序的区别(进程是动态的有生命周期的,程序是静态的,可以永久存储至磁盘)、进程的生命周期(使用ps、top命令查看进程状态)以及进程运行的状态指标。
如何管理进程状态?
使用kill命令管理正在运行的进程
使用kill -l命令列出当前系统所支持的信号
正在运行的进程
PS:Linux系统中最常用的3个信号
数字编号 | 信号含义 | 信号翻译 |
---|---|---|
1 | SIGHUP | 通常用来重新加载配置文件 |
9 | SIGKILL | 强制杀死进程 |
15 | SIGTERM | 终止进程,默认kill使用该信号 |
-
1)使用kill命令杀死指定PID的进程
# 1.发送信号1,15给vsftpd
[root@wyw-10 ~]# yum install vsftpd -y 安装vsftpd程序
[root@wyw-10 ~]# systemctl start vsftpd 启动vsftpd
[root@wyw-10 ~]# ps aux | grep vsftpd 使用ps查看进程的状态
# 2.使用kill -1,发送重载信号,如将vsftpd的配置文件发生改变,重新加载
[root@wyw-10 ~]# kill -1 95934
# 3.发送停止信号
[root@wyw-10 ~]# kill 95934
[root@wyw-10 ~]# kill -9 95934
# 4.使用kill -9 强制停止信号
-
2)使用killall pkill命令杀死指定名字的进程。
# 1.通过服务名称杀掉进程
[root@wyw-10 ~]# pkill vsftpd
[root@wyw-10 ~]# killall vsftpd
# 2.使用pkill踢出从远程登录到本机的用户,终止pts/0上所有进程, 并且bash也结束(用户被强制退出)
image.png
二、管理后台进程
1.什么是后台进程
通常进程都会在终端前台运行,关掉终端后,进程也就跟着结束。如果将进程放入后台运行,就算关掉终端,放入后台的程序也依然会运行。后台进程即就是将前台运行的进程放到后台,且进程依然运行的过程。
2.使用screen工具将前台运行的进程放入后台
# 1.先安装screen
[root@wyw-10 ~]# yum install screen
# 2.开启一个screen窗口,指定名称
开启screen窗口
# 3.在screen窗口执行任务即可
[root@wyw-10 ~]# systemctl start vsftpd
[root@wyw-10 ~]# ps aux |grep vsftpd
root 97865 0.0 0.1 127636 1172 pts/0 S+ 15:49 0:00 screen -S vsftpd
root 97866 0.0 0.1 127768 1408 ? Ss 15:49 0:00 SCREEN -S vsftpd
root 98097 0.0 0.0 53276 576 ? Ss 15:54 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
# 4.平滑的退出screen,但不会终止screen中的任务
使用ctrl+a+d退出screen,如果要真正退出,则需要exit,才算真正的关闭了screen
# 5.查看当前运行的screen与哪些
[root@wyw-10 ~]# screen -list
# 6.进入正在运行的screen
screen+ -r +名称/PID号
四、进程的优先级
1.什么是优先级
优先级指的是优先享受资源
2.使用nice和renice配置优先级
-
1)nice
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。
使用top或者ps命令查看进程的优先级
(1)使用top可以查看nice优先级。 NI: 实际nice级别,默认是0。 PR: 显示nice值,-20映射到0,+19映射到39
(2)使用ps查看进程优先级
ps查看优先级
nice指定程序的优先级
语法格式:nice -n+优先级数字+进程名程
# 1.开启vim并且指定优先级为-10
[root@wyw-10 ~]# nice -n -10 vim &
[1] 99169
# 2.查看该进程的优先级情况
[root@wyw-10 ~]# ps axo pid,command,nice |grep 99169
99169 vim -10
-
2)renice
renice命令修改一个正在运行的进程优先级
语法格式:renice -n+优先级数字+进程pid
#1.查看sshd进程当前的优先级状态
[root@wyw-10 ~]# ps axo pid,command,nice |grep sshd
7380 /usr/sbin/sshd -D 0
97119 sshd: root@pts/0 0
#2.调整sshd主进程的优先级
[root@wyw-10 ~]# renice -n -20 7380
7380 (process ID) old priority 0, new priority -20
# 3.调整完成后,使用exit退出
#4.当再次登陆sshd服务,会由主进程fork子进程(那么子进程会继承主进程的优先级)
[root@wyw-10 ~]# ps axo pid,command,nice |grep sshd
7380 /usr/sbin/sshd -D -20
99710 sshd: root@pts/0 -20
五、系统平均负载
1.什么是平均负载
平均负载其实就是单位时间内的活跃进程数。(处于运行+处于等待运行+不可中断的进程)
2.平均负载和cpu使用率的关系
平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。
而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。
3.如何查看平均负载
使用stress、mpstat、pidstat等工具,查看平均负载的使用率
stress 是 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
mpstat 是多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
-
场景一:CPU密集型进程
1.首先,我们在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景
[root@wyw-10 ~]# stress --cpu 1 --timeout 800
2.接着,在第二个终端运行 uptime 查看平均负载的变化情况
用watch -d查看3.最后,在第三个终端运行 mpstat 查看 CPU 使用率的变化情况
image.png
PS:单核CPU只有一个all和0
-
场景二:I/O密集型进程
1.首先还是运行 stress 命令,但这次模拟 I/O 压力,即不停地执行 sync
[root@wyw-10 ~]# stress --io 2 timeout 600s
2.然后在第二个终端运行 uptime 查看平均负载的变化情况
image.png
3.最后第三个终端运行 mpstat 查看 CPU 使用率的变化情况
image.png
4.使用pidstat查看导致iowait升高的进程
pidstat查询
-
场景三:大量进程的场景
当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。
1.首先,我们还是使用 stress,但这次模拟的是 4 个进程
[root@wyw-10 ~]# stress -c 4 --timeout 800
2.由于系统只有 1 个 CPU,明显比 4 个进程要少得多,因而,系统的 CPU 处于严重过载状态
查看状态
3.然后,再运行 pidstat 来看一下进程的情况
每5s输出一组数据
通过上面三个案例得知
平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况,但是,平均负载有可能是CPU密集导致的,也有可能是I/O密集导致的。