cab*_*oad 5 linux bash process
我有一个进程想要终止然后重新启动服务。有人编写了通过编写以下脚本集来终止进程的代码
ps -ef |grep "process_name" | awk '{print "kill -15 " $2}'> /projects/test/kill.sh
#run the kill script
/projects/test/kill.sh
Run Code Online (Sandbox Code Playgroud)
然后又
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.
Run Code Online (Sandbox Code Playgroud)
据我了解,kill -15 会优雅地终止该进程。但他们很快就拥有了kill -9。因此,如果一个进程在第一个命令中被杀死,那么当在同一进程上运行kill -9 时会发生什么?或者 ps -ef 是否会列出该进程,因为它已被标记为终止?
谢谢!
你是对的,那kill -15就是优雅地终止一个进程。但是,终止进程是瞬间发生的事情。所以上面的程序将检查pid,并尝试优雅地杀死它。如果kill -15 失败- 则kill -9执行。它知道失败的方式kill -15是grep命令。如果kill -15成功,则该内容pid不应再存在,从而使以下grep返回为空。
所以实际上,只有在未能正常停止程序kill -9时才运行。kill -15这种方法的问题在于,有时优雅地停止进程可能需要一些时间,具体取决于程序。因此,恕我直言,需要一段等待时间或sleep几秒钟的时间,以便kill -15尝试优雅地停止该进程。最肯定的是,使用上述方法,kill -9几乎总是会被调用,因为脚本不允许进程有太多时间来停止进程。正确关闭。如果kill -15仍在处理,kill -9将覆盖并立即停止该过程。
| 归档时间: |
|
| 查看次数: |
28088 次 |
| 最近记录: |