在linux上进行工作,常常需要使用kill命令中止进程。一般情况下,使用ps命令找出待中止的进程ID,直接使用"kill PID"就可以了。但这个命令偶尔也会失效,进程无法中止,这时,就需要对kill命令进行一些深入了解,来寻求解决办法。
先看一下linux对kill命令的描述:
DESCRIPTION
原来,kill命令可以发送多个不同的信号。默认(缺省)情况下,kill发送的是TERM,即15(SIGTERM)信号,"kill PID"与"kill -15 PID"是一样的。这个信号通常会要求程序自己正常退出,是一种比较安全的用法。但它是可以被阻塞,处理和忽略的,所以对于有的进程,会中止失败。
另一个常用的信号是9(SIGKILL),这个命令表示立即结束程序,是不能被阻塞,处理和忽略的。在TERM信号失效的情况下,可以尝试使用"kill -9 PID"。使用"kill -l",可以查看更多的信号列表。
虽然"kill -9"命令已经很强大,但也有可能还是不能达到目的。这时候,还有一个办法,就是使用"ps -ef"找出待中止的进程的父进程(PPID),然后使用kill或killall命令杀掉它。