Linux kill killall pkill 使用方法
kill终止进程
kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill 命令的基本格式如下:
[root@localhost ~]# kill [信号] PID
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号,这里仅列出几个常用的信号,如表 1 所示。
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
[root@www ~]# yum install psmisc* -y --如果要使用pstree请安装该软件包
【例 1】 标准 kill 命令
[root@www ~]# pstree -p | grep httpd
|-httpd(64728)-+-httpd(64729)
| |-httpd(64730)
| |-httpd(64731)
| |-httpd(64732)
| `-httpd(64733)
#杀死PID是64728的httpd进程,默认信号是15,正常停止,如果默认信号15不能杀死进程,则可以尝试-9信号,强制杀死进程
[root@www ~]# kill 64728
[root@www ~]# pstree -p | grep httpd
[root@www ~]# --可以看到正常结束了进程
【例 2】使用“-1”信号,让进程重启。
[root@www ~]# pstree -p | grep httpd
|-httpd(64924)-+-httpd(64925)
| |-httpd(64926)
| |-httpd(64927)
| |-httpd(64928)
| `-httpd(64929)
[root@www ~]# kill -1 64924 --使用“(数字1)”信号,让httpd的主进程重新启动
[root@www ~]# pstree -p | grep httpd
|-httpd(64924)-+-httpd(65153)
| |-httpd(65154)
| |-httpd(65155)
| |-httpd(65156)
| `-httpd(65157)
子httpd进程的PID都更换了,说明httpd进程已经重启了一次
killall 终止特定的一类进程
killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。
killall 命令的基本格式如下:
[root@localhost ~]# killall [选项] [信号] 进程名
注意,此命令的信号类型同 kill 命令一样,因此这里不再赘述,此命令常用的选项有如下 2 个:
- -i:交互式,询问是否要杀死某个进程;
- -I:忽略进程名的大小写;
【例 】杀死 httpd 进程。
[root@www ~]# pstree | grep httpd
|-httpd---5*[httpd]
[root@www ~]# pstree -p | grep httpd
|-httpd(64924)-+-httpd(65153)
| |-httpd(65154)
| |-httpd(65155)
| |-httpd(65156)
| `-httpd(65157)
[root@www ~]# killall httpd
[root@www ~]# pstree -p | grep httpd
[root@www ~]#
[root@www ~]# killall -i httpd --使用i选项交互式
Kill httpd(67337) ? (y/N) y
Kill httpd(67338) ? (y/N) y
httpd(67338): No such process
[root@www ~]# pstree -p | grep httpd
pkill命令:终止进程
当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,该命令的基本格式如下:
[root@localhost ~]# pkill [信号] 进程名
表 1 罗列了此命令常用的信号及其含义。
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
[root@www ~]# pstree -p | grep httpd
|-httpd(67657)-+-httpd(67658)
| |-httpd(67659)
| |-httpd(67660)
| |-httpd(67661)
| `-httpd(67662)
[root@www ~]# pkill httpd --按照名称杀死一类进程
[root@www ~]# pstree -p | grep httpd
[root@www ~]#
目录 返回
首页