0
点赞
收藏
分享

微信扫一扫

Linux kill killall pkill 使用方法


kill终止进程

kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
 


kill 命令的基本格式如下:


[root@localhost ~]# kill [信号] PID

kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号,这里仅列出几个常用的信号,如表 1 所示。
 

表 1 kill命令常用信号及其含义

信号编号

信号名

含义

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 罗列了此命令常用的信号及其含义。

表 1 pkill 命令常用信号及其含义

信号编号

信号名

含义

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 ~]#

 

举报

相关推荐

0 条评论