尽量避免直接使用 kill -9

来源:互联网 发布:galgame翻译软件 编辑:程序博客网 时间:2024/06/08 03:59

kill -9

没有给进程留下善后的机会:

1)关闭socket链接;

2)清理临时文件;

3)将自己快要给销毁的消息通知给子进程;

4)重置自己的终止状态。

通常,应该发送 15,等一两秒钟,如果没有效果,发送2,如果还不行,发送1。

总之,在使用 kill -9 前,你应该先使用 kill -15,给目标进程一个清理善后工作的机会(进程也许无法捕捉或直接忽略SIGKILL信号,但他们可以,通常也是能够捕捉 SIGTERM 信号的)。

如果你不留机会让进程完成清理工作,他们会留下一些不完整的文件或状态,当系统重启时,程序将无法理解这些状态。

kill 命令

-l (L的小写):列出目前 kill 能够使用的信号有哪些,信号代表给予后面接的那个工作什么样的指示,用 man 7 signal 可知:

-1:重新读取一次参数的配置文件(类似reload)

-2:代表与由键盘输入【ctrl】-c 同样的操作;

-9:立刻强制删除一个工作;

-15:以正常的程序方式终止一项工作;

strace/truss,ltrace和gdb都是查看一个卡住的进程因何卡住的好工具。

另外,Solaris 里的 truss -u 非常好用,Solaris 里还有一些非常有用的 /proc 相关工具,有一些已经被移植到 Linux 上。




参考:
不要使用kill -9

原创粉丝点击