Linux kill 、kill -15、kill -9 的区别
kill与kill -9的区别
kill命令格式:
kill -Signal pid
pid
是进程号,可以用 ps
命令查出
signal
是发送给进程的信号
kill
和kill -9
,两个命令在Linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。
kill(不加 -* 默认kill -15)
命令
系统会发送一个SIGTERM
信号给对应的程序。当程序接收到该signal信号后,将会发生以下事情:
- 程序立刻停止
- 当程序释放相应资源后再停止
- 程序可能仍然继续运行
大部分程序接收到SIGTERM
信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO,可能就不会立马做出响应),也就是说,SIGTERM
有可能是会被阻塞的。
kill -9
命令
系统给对应程序发送的信号是SIGKILL
,即exit
。exit
信号不会被系统阻塞,所以kill -9
能顺利杀掉进程。
总结:
- 在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。如果没有,可能会留下一些不完整的文件或状态,从而影响服务的再次启动。
飞在风前: 方案一:没有这个选项 方案二:fail 解决方案三:修改控制台的编码格式 可以解决
松子木木: #pragma execution_character_set("utf-8") 有用
折木奉太困: 非常好文章,使我的大脑旋转
Wwadu: 我也不敢看啊
猪肝色334: 我不敢看啊