进程管理(下)

一、管理进程的状态

当程序运行后,希望停止进程。我们可以使用kill、killall、pkill命令对进程发送关闭信号。

  1. kill能够查看当前系统支持的信号。
[root@ZhaoJianHao-1 ~]# kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

三个常用信号
数字编号 信号含义 信号翻译
1 SIGHUP 通常用来重新加载配置文件
9 SIGKILL 强制杀死进程
15 SIGTERM 终止进程,默认kill使用该信号

1.使用kill命令杀死指定PID的进程

以vsftpd为例:
[root@ZhaoJianHao-1 ~]# rpm -qa vsftpd
vsftpd-3.0.2-25.el7.x86_64
[root@ZhaoJianHao-1 ~]# systemctl start vsftpd #启动vsftpd,查看进程

kill -l + PID# 重新加载配置文件
[root@ZhaoJianHao-1 ~]# kill -1 24001 #重新加载配置文件,
[root@ZhaoJianHao-1 ~]# ps aux |grep vsftpd
root      24001  0.0  0.0  53180   760 ?        Ss   23:43   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      24292  0.0  0.0 112708   972 pts/0    S+   23:49   0:00 grep --color=auto vsftpd

kill + PID号,直接杀死该进程
[root@ZhaoJianHao-1 ~]# systemctl start vsftpd #重新开启vsftpd
[root@ZhaoJianHao-1 ~]# ps aux |grep vsftpd  #查看vsftpd进程
root      24001  0.0  0.0  53180   760 ?        Ss   23:43   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      24556  0.0  0.0 112708   976 pts/0    R+   23:55   0:00 grep --color=auto vsftpd
[root@ZhaoJianHao-1 ~]# kill 24001 
[root@ZhaoJianHao-1 ~]# ps aux |grep vsftpd
root      24582  0.0  0.0 112708   976 pts/0    S+   23:55   0:00 grep --color=auto vsftpd

kill 9 +PID 强制杀手进程
[root@ZhaoJianHao-1 ~]# systemctl start vsftpd
[root@ZhaoJianHao-1 ~]# ps aux |grep vsftpd
root      24993  0.0  0.0  53180   580 ?        Ss   00:03   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      24997  0.0  0.0 112708   976 pts/0    S+   00:03   0:00 grep --color=auto vsftpd
[root@ZhaoJianHao-1 ~]# kill 9 24993
[root@ZhaoJianHao-1 ~]# ps aux | grep vsftpd
root      25056  0.0  0.0 112708   972 pts/0    S+   00:04   0:00 grep --color=auto vsftpd

2.(killall、pkill)+name #命令用于批量杀掉所有的进程。

#例1、通过服务名称杀掉进程
[root@ZhaoJianHao-1 ~]# pkill nginx
[root@ZhaoJianHao-1 ~]# killall ngin

pkill -9 #强制杀掉进程

管理后台进程

1.什么是后台进程
将在前台运行的进程放入后台运行,这样及时我们关闭了终端也不影响进程的正常运行。
2.为什么要将进程放入后台
放入后台,防止关闭终端或网络问题导致进程结束。
3.使用什么工具将进程放入后台
screen用法,(重要)

1)安装命令
[root@ZhaoJianHao-1 ~]yum install screen -y 

2.开启一个screen窗口,指定名称
[root@ZhaoJianHao-1 ~] screen  -S cheshi

3.在screen窗口中执行任务即可
[root@ZhaoJianHao-1 ~]# wget https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

4.后台任务执行后,平滑切换回前台。
ctrl + a+ d

5.查看当正在运行的screen -list
[root@ZhaoJianHao-1 ~]# screen -list
There is a screen on:
    30718.001   (Detached)
1 Socket in /var/run/screen/S-root.

6.进入正在运行的程序
[root@ZhaoJianHao-1 ~]# screen -r  30718

进程的优先级

1.什么是优先级

优先享受资源。

2.为什么系统要有优先级

因为系统中运行很多进程,在系统运行内存不足时,系统会强制随机杀死一个进程。所以避免重要进程不被杀死,优先执行该进程就不会出现问题。

3.如何给进程配置优先级

启动进程时,为不同进程使用不同调度策略
nice值越高,优先级越低
nice值越低,优先级越高

  1. top 、ps 查看进程的优先级
    NI: 实际nice级别,默认0
    PR:显示nice值,-20映射到0. +19映射到39

  2. ps过滤查看进程的优先级

[root@ZhaoJianHao-1 ~]# ps axo command,nice |grep sshd|grep -v grep
/usr/sbin/sshd -D             0
sshd: root@pts/0              0

nice指定程序的优先级。语法格式 nice -n 优先级数字 进程名称

#1.开启vim并且指定程序优先级为-5
[root@m01 ~]# nice -n -5 vim &
[1] 98417

#2.查看该进程的优先级情况
[root@m01 ~]# ps axo pid,command,nice |grep 98417
 98417 vim                         -5

renice命令修改一个正在运行的进程优先级。
语法格式 --> renice -n 优先级数字 进程pid

#1.查看sshd进程当前的优先级状态
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
 70840 sshd: root@pts/2              0
 98002 /usr/sbin/sshd -D             0
 
#2.调整sshd主进程的优先级
[root@m01 ~]# renice -n -20 98002
98002 (process ID) old priority 0, new priority -20

#3.调整之后记得退出终端
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
 70840 sshd: root@pts/2              0
 98002 /usr/sbin/sshd -D           -20
[root@m01 ~]# exit

#4.当再次登陆sshd服务,会由主进程fork子进程(那么子进程会继承主进程的优先级)
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
 98002 /usr/sbin/sshd -D           -20
 98122 sshd: root@pts/0            -20

系统平均负载

系统变慢时,输入 uptime 命令,系统也随即给出了结果。

[root@ZhaoJianHao-1 ~]# uptime
 02:41:25 up 21:24,  3 users,  load average: 0.00, 0.01, 0.05
什么是平均负载

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数, PS: 平均负载与 CPU 使用率并没有直接关系。
平均负载其实就是单位时间内的活跃进程数

可运行状态和不可中断状态是什么

1.可运行状态进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们ps 命令看到处于 R 状态的进程。
2.不可中断进程,系统中最常见的是等待硬件设备的 I/O 响应,也就是我们 ps 命令中看到的 D 状态。实际上是系统对进程和硬件设备的一种保护机制。
一句话总结:实就是单位时 间内的活跃进程数。(处于运行+处于等待运行+不可中断的进 程)
平均和cpu使用率有什么直接的关系? 如何查看平均负载?
1.三个数值都需要关注 综合评估
2.考虑是cpu使用率高, 还是cpu的IO等待过多造成过高 大量使用cpu进程造成过高

你可能感兴趣的:(进程管理(下))