Bash片段用于杀死一个进程直到它死了?

我正在尝试编写一个强大的bash脚本,并在其中创建一个后台进程.在脚本结束时,我想要杀死它.我有它的PID.

我在想这样的事情

while [[ ps ef $PID ]] ; do
  kill $PID
  sleep 0.5
done

有什么建议更好吗?这种方法有任何可能的问题吗?

重复杀死进程的问题在于您在创建新进程时遇到了竞争条件.这并不是特别可能,但是当你正在睡觉时,过程可能会退出并且新进程会以相同的PID启动.

你为什么不得不反复杀死这个过程?如果是因为进程将退出,但在收到信号后退出可能需要一些时间,您可以使用wait:

kill $PID
 wait $PID

一个理想的系统中,你永远不必重复杀死或发出kill -9 $PID.如果你必须这样做,你可能会考虑修复你正在运行的任何东西,所以你不必这样做.在此期间,你可能不会遇到竞争条件,你可以通过(比方说)在杀死进程之前检查/ proc / $PID /的时间戳来防范它.不过,这是糟糕的黑客行为.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...