我有一个进程想要终止然后重新启动服务。有人编写了通过编写以下脚本集来终止进程的代码
ps -ef |grep "process_name" | awk '{print "kill -15 " $2}'> /projects/test/kill.sh
#run the kill script
/projects/test/kill.sh
然后又
ps -ef |grep "process_name" | awk '{print "kill -9 " $2}'> /projects/test/kill.sh
#run the kill script
/projects/test/kill.sh
#finally
service restart command here
# the problem here is that service does not restart properly sometimes,
as it thinks that process is still running.
据我了解,kill -15 会优雅地终止该进程。但他们很快就拥有了kill -9。
因此,如果一个进程在第一个命令中被杀死,那么当在同一进程上运行kill -9 时会发生什么?或者 ps -ef 是否会列出该进程,因为它已被标记为终止?
谢谢!
你是对的kill -15
is to 优雅地杀死一个进程。但是,终止进程是瞬间发生的事情。所以上面的程序将检查pid
,试图优雅地杀死它..如果kill -15
fails- 这kill -9
被执行。它知道的方式kill -15
失败了,是grep
命令。如果kill -15
是成功的,即pid
不应该再存在了,使得以下内容grep
返回空。
所以真的,kill -9
仅运行如果kill -15
未能正常停止程序。这种方法的问题在于,有时优雅地停止进程可能需要一些时间,具体取决于程序。所以恕我直言,需要一段等待期或sleep
几秒钟以允许kill -15
尝试优雅地停止该过程..最有把握的是使用上述方法,kill -9
几乎总是被调用,因为脚本不允许太多时间来正确关闭进程。如果kill -15
仍在处理中,kill -9
只会覆盖并立即停止该过程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)