日期:2014-05-16  浏览次数:20631 次

linux 强杀进程
在开发中遇到问题:某个进程已经死掉,不想reboot  
想kill掉他
使用 kill PID 未提示任何错误信息,但是进程还是在运行着

解决办法:
kill -9 PID

kill -kill PID
成功杀掉进程
参考:http://zhidao.baidu.com/question/160653674.html&__bd_tkn__=71b54636296bde31450ee772b8f864b19810dafb8078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb6015795afd349864afff5a0f03de01252708a337cd0d4e77ee70792ccc8fa249430b075e3b5abf620d364fc7a9a89a09fcaccbdc8d03ca3c21f447a8
kill 实际的实际作用是给进程发信号(signal), 其常用格式为

kill -sig pid

这里的 sig 可以是信号对应的数字,也可以是信号名,比如你如果用 kill -9 pid 实际是发 9号信号给进城,9对应的信号名是 KILL。所以 kill -9 等价于 kill -KILL pid。 常用的几个信号是

INT        2   这个就是你在bash下面用Ctrl+C 来结束一个程序时,bash会向进程发送这个信号,默认的,进程收到这个程序会结束。 你可以用 kill -INT pid 来发这个信号。

QUIT       3   这个是你在bash下用 Ctrl+\ 来结束程序时,发的信号,进程默认受到这个信号后也是结束

KILL       9   这个信号之所以被称为“强杀”,就是因为无法改变进程收到这个信号后所执行的动作,进程只能退出。 (前面说的两个信号,虽然默认是退出,但是应用程序自己可以通过signal系统调用来修改成其他动作,比如忽略那两个信号等动作)

更多信息,可以man kill, 另外可以学习一下linux的信号机制,信号相关的系统调用等。对我说的有什么不明白之处,可以baidu hi我