我正在尝试编写一个强大的bash脚本,并在其中创建一个后台进程.在脚本结束时,我想要杀死它.我有它的PID.
我在想这样的事情
while [[ ps ef $PID ]] ; do kill $PID sleep 0.5 done
有什么建议更好吗?这种方法有任何可能的问题吗?
重复杀死进程的问题在于您在创建新进程时遇到了竞争条件.这并不是特别可能,但是当你正在睡觉时,过程可能会退出并且新进程会以相同的PID启动.
你为什么不得不反复杀死这个过程?如果是因为进程将退出,但在收到信号后退出可能需要一些时间,您可以使用wait:
kill $PID wait $PID
在一个理想的系统中,你永远不必重复杀死或发出kill -9 $PID.如果你必须这样做,你可能会考虑修复你正在运行的任何东西,所以你不必这样做.在此期间,你可能不会遇到竞争条件,你可以通过(比方说)在杀死进程之前检查/ proc / $PID /的时间戳来防范它.不过,这是糟糕的黑客行为.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。