加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:37:07 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个强大的bash脚本,并在其中创建一个后台进程.在脚本结束时,我想要杀死它.我有它的PID. 我在想这样的事情 while [[ ps ef $PID ]] ; do kill $PID sleep 0.5done 有什么建议更好吗?这种方法有任何可能的问题吗? 重复杀死进程的问题在于您在
我正在尝试编写一个强大的bash脚本,并在其中创建一个后台进程.在脚本结束时,我想要杀死它.我有它的PID.

我在想这样的事情

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

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

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

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

kill $PID
 wait $PID

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读