命令作用
kill命令用于向运行中的进程发送信号,默认发送的信号是终止信号,会请求进程退出。发送的信号可能与杀死进程无关。
语法
kill [ (信号)参数 ] [ 进程号 ]
参数
信号 | 参数 | 注释 |
---|---|---|
HUP | 1 | 终端断线 |
INT | 2 | 中断(同 Ctrl +C) |
QUIT | 3 | 退出(同 Ctrl + \) |
TERM | 15 | 终止 |
KILL | 9 | 强制终止 |
CONT | 18 | 继续(与STOP相反, fg/bg命令) |
STOP | 19 | 暂停(同 Ctrl + Z) |
比较常用的是:
- 强制终止信号:9
- 终止信号:15
- 中断信号:2
注意
(1) kill一般结合 ps -ef | grep 进程 来查找需要杀掉的进程ID
(2) kill -9 是强制杀掉,程序(进程)无法捕捉这个信号。
linux 使用 kill -9 命令杀死程序,程序无法主动释放资源。操作系统从进程表中直接清除该程序,不会给程序任何通知和反应时间。
(3) kill -15 是可以被执行、阻塞和忽略。
kill -15
通知对应的进程要进行"安全、干净的退出",退出前一般会进行资源释放、临时文件清理等等,再进行程序的终止。如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略终止信号。
总结
在非必要时,不要使用kill -9命令,尤其是那些web应用、提供RPC服务、执行定时任务、包含长事务等应用中,因为kill -9 没给spring容器、tomcat服务器、dubbo服务、流程引擎、状态机等足够的时间进行收尾。