|NO.Z.00013|——————————|^^ 操作 ^^|——|Linux&进程管理.V03|——|kill 进程|

一、进程的管理
### --- 系统中可以识别的信号较多,我们可以使用命令“kill -l”或“man 7 signal”来查询,命令 如下:

[root@server11 ~]# 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    

这里我们介绍一下主要的信号,如表 15-6 所示:

信号代号 信号名称 说明
1 SIGHUP 该信号让进程立即关闭,然后重新读取配置文件之后重启。
2 SIGINT 程序终止信号,用于终止前台进程。相当于输出 ctrl+c 快捷键。
8 SIGFPE

在发生致命的算术运算错误时发出. 不仅包括浮点运算错误,还包括溢出及除数为 0 等其它所有的算术的错误。

9 SIGKILL

用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。一般用于强制终止进程。

14 SIGALRM 时钟定时信号, 计算的是实际的时间或时钟时间. alarm 函数使用该信号
15 SIGTERM

正常结束进程的信号,kill 命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL 信号,也就是信号 9。

18 SIGCONT 该信号可以让暂停的进程恢复执行,本信号不能被阻断。
19 SIGSTOP

该信号可以暂停前台进程,相当于输入 ctrl+z 快捷键。本信号不能被阻断。

二、进程管理:kill 命令

### --- kill 命令

[root@localhost ~]# kill [信号] PID                           // kill后面只能跟ID号     #-1重启,-9强制终止
 
### --- 例子1:杀死进程

[root@server11 ~]# ps aux |grep httpd
apache    14945  0.0  0.1 232476  3164 ?        S    21:03   0:00 /usr/sbin/httpd -DFOREGROUND
[root@server11 ~]# kill -9 14945
[root@server11 ~]# ps aux |grep httpd                         // 查看不到杀死的进程
 
### --- 例 2:使用“-1”信号,让进程重启
~~~     使用“-1(数字一)”信号,让 httpd 的主进程重启动。

[root@localhost ~]# kill -1 2246
 
### --- 例 3:使用“-19”信号,让进程暂停。
[root@localhost ~]# vi test.sh

~~~     使用 vi 命令编辑一个文件,不要退出
~~~     换一个不同的终端,查看下这个这个进程的状态。进程状态是 S(休眠)和+(位于后台),
~~~     因为是在另外一个终端运行的命令
[root@localhost ~]# ps aux | grep "vi" | grep -v "grep"
root   2313 0.0 0.2 7116 1544 pts/1     S+  19:20       0:00 vi test.sh
 
~~~     使用-19 信号,让 PID  2313 的进程暂停。相当于在 vi 界面按“ctrl+z”快捷键。
[root@localhost ~]# kill -19 2313
 
~~~     注意 2313 进程的状态,变成了 T(暂停)状态。
~~~     这时我切换回 vi 的终端,发现 vi 命令已经暂停,又回到了命令提示符。
~~~     不过 2313 进程就会卡在后台,如果想要恢复可以使用“kill -9 2313”强制终止进程,
~~~     也可以利用 15.2 小节将要学习的工作管理来进行恢复。
[root@localhost ~]# ps aux | grep "vi" | grep -v "grep"
root   2313 0.0 0.2 7116 1580 pts/1     T       19:20   0:00 vi test.sh
三、进程管理:killall 命令
### --- killall命令
~~~     选项: 
~~~     -i:交互式,询问是否要杀死某个进程
~~~     -I:忽略进程名的大小写

[root@localhost ~]# killall [选项][信号] 进程名
### --- 杀死httpd
~~~     交互式杀死 httpd 进程
~~~     查询系统有 3  sshd 进程。1733  sshd 服务的进程,
~~~     1735  1758 是我的两个远程连接的进程。

[root@server11 ~]# ps aux | grep "httpd" | grep -v "grep"
root      15138  0.0  0.2 230392  5184 ?        Ss   21:20   0:00 /usr/sbin/httpd -DFOREGROUND
apache    15139  0.0  0.1 232476  3164 ?        S    21:20   0:00 /usr/sbin/httpd -DFOREGROUND
apache    15140  0.0  0.1 232476  3164 ?        S    21:20   0:00 /usr/sbin/httpd -DFOREGROUND
apache    15141  0.0  0.1 232476  3164 ?        S    21:20   0:00 /usr/sbin/httpd -DFOREGROUND
apache    15142  0.0  0.1 232476  3164 ?        S    21:20   0:00 /usr/sbin/httpd -DFOREGROUND
apache    15143  0.0  0.1 232476  3164 ?        S    21:20   0:00 /usr/sbin/httpd -DFOREGROUND
~~~     查询系统有5 个 httpd 进程。15138 是 httpd 服务的进程,
~~~     1513915140 等式工作进程

[root@server11 ~]# killall -9 httpd
[root@server11 ~]# ps aux | grep "httpd" | grep -v "grep"
[root@localhost ~]# killall -i httpd
[root@server11 ~]# killall -i httpd
Kill httpd(15267) ? (y/N) y                                     // 杀死主进程
Kill httpd(15268) ? (y/N) y                                     // httpd的主进程死亡后,工作进程也会随之死亡
httpd(15268): No such process
### --- 杀死sshd
~~~     交互式杀死 sshd 进程;提出除自己以外的其它终端。
~~~     查询系统有 3  sshd 进程。1733  sshd 服务的进程,
~~~     1735  1758 是我的两个远程连接的进程。

[root@server11 ~]# ps aux | grep "sshd" | grep -v "grep"
root        948  0.0  0.2 112796  4328 ?        Ss   15:33   0:00 /usr/sbin/sshd -D
root      13207  0.0  0.3 163484  6056 ?        Ss   18:24   0:00 sshd: root@pts/1
root      14710  0.0  0.3 163480  6112 ?        Ss   20:48   0:00 sshd: root@pts/0,pts/2,pts/3
 
~~~     交互式杀死 sshd 进程
~~~     杀死 sshd(1733) ? (y/N) n
~~~     这个进程是 sshd 的服务进程,如果杀死,所有的 sshd 连接都不能登录。
~~~     杀死 sshd(1735) ? (y/N) n
~~~     这是我当前登录终端,不能杀死我自己吧!
~~~     杀死 sshd(1758) ? (y/N) y
~~~     把另外一个 sshd 登录终端踢出。

[root@server11 ~]# kill -i sshd

四、进程管理:pkill 命令

~~~     pkill 命令和 killall 命令非常类似,也是按照进程名来杀死进程。格式如下:
~~~     选项:
~~~     -t 终端号: 按照终端号踢出用户

[root@localhost ~]# pkill [选项] [信号] 进程名
[root@server11 ~]# w
 21:32:42 up  6:01,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.10.10.240     20:48    2.00s  0.18s  0.00s w
root     pts/1    10.10.10.240     18:19    3:01m  0.04s  0.04s -bash
root     pts/2    10.10.10.240     21:29    3:20   0.03s  0.03s -bash
~~~     强制杀死从 pts/1 虚拟终端登录的进程

[root@server11 ~]# pkill -t -9 pts/1
[root@server11 ~]# w
 21:33:49 up  6:02,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.10.10.240     20:48    5.00s  0.19s  0.00s w
root     pts/2    10.10.10.240     21:29   45.00s  0.03s  0.03s -bash

 

 

 

 

 

 

 

 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示