linux运维基础篇

Linux进程管理 day22

2019-08-22  本文已影响0人  静如止水yw

1.管理进程状态
2.管理后台进程
3.进程的优先级
4.系统平均负载


一、管理进程状态

昨天主要学习了进程(正在运行的程序)、进程与程序的区别(进程是动态的有生命周期的,程序是静态的,可以永久存储至磁盘)、进程的生命周期(使用ps、top命令查看进程状态)以及进程运行的状态指标。

如何管理进程状态?

使用kill命令管理正在运行的进程

使用kill -l命令列出当前系统所支持的信号


正在运行的进程

PS:Linux系统中最常用的3个信号

数字编号 信号含义 信号翻译
1 SIGHUP 通常用来重新加载配置文件
9 SIGKILL 强制杀死进程
15 SIGTERM 终止进程,默认kill使用该信号
# 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 强制停止信号 
# 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配置优先级

nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。

使用top或者ps命令查看进程的优先级
(1)使用top可以查看nice优先级。 NI: 实际nice级别,默认是0。 PR: 显示nice值,-20映射到0,+19映射到39

top查看nice优先级
(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

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 以及上下文切换等性能指标。

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

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密集导致的。

上一篇下一篇

猜你喜欢

热点阅读