Linux kill命令的用法(非常详细)
从字面来看,kill 就是用来杀死进程的命令。但是,根据不同的信号,kill 命令可以完成不同的操作,其格式如下:
kill 命令是按照 PID 来确定进程的,因此 kill 命令只能识别 PID,不能识别进程名。下面举几个例子来说明一下 kill 命令。
【示例 1】标准 kill 命令。
【实例 2】杀死 PID 为 1513 的 httpd 进程,使用信号 9(强制):
【实例 3】使用信号 1 让主进程重新加载配置并重启子进程:
[root@localhost ~]# kill [信号] PID这里介绍一下常见的信号,如下表所示:
信号代号 | 信号名 | 说明 |
---|---|---|
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 快捷键。该信号不能被阻断 |
【示例 1】标准 kill 命令。
# 启动 RPM 包默认安装的 Apache 服务 [root@localhost ~]# systemctl start httpd.service # 查看 httpd 的进程树及 PID # 使用 pstree 查询;grep 排除自身 [root@localhost ~]# pstree -p | grep httpd | grep -v "grep" |-httpd(1472)-+-httpd(1473) |-httpd(1475)-+-{httpd}(1478) |-{httpd}(1479) |-{httpd}(1480) |-{httpd}(1481) |-{httpd}(1482) |-{httpd}(1483) |-{httpd}(1484) |-{httpd}(1485) ...省略部分输出...
【实例 2】杀死 PID 为 1513 的 httpd 进程,使用信号 9(强制):
[root@localhost ~]# kill -9 1513 [root@localhost ~]# pstree -p | grep httpd | grep -v "grep" |-httpd(1472)-+-httpd(1473) |-httpd(1475)-+-{httpd}(1478) |-{httpd}(1479) |-{httpd}(1480) |-{httpd}(1481) |-{httpd}(1482) |-{httpd}(1483) |-{httpd}(1484) |-{httpd}(1485)
【实例 3】使用信号 1 让主进程重新加载配置并重启子进程:
[root@localhost ~]# kill -1 1472 [root@localhost ~]# pstree -p | grep httpd | grep -v "grep" |-httpd(1472)-+-httpd(1774) |-httpd(1775)-+-{httpd}(1818) |-{httpd}(1819) |-{httpd}(1820) |-{httpd}(1821) |-{httpd}(1822)主 httpd 进程(1472)没变,子 httpd 进程的 PID 都更换了,说明 httpd 进程已重启一次。