微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在linux bash脚本中杀死一个10分钟的僵尸进程

我一直在修补yukondude的正则表达式答案但收效甚微.我正在尝试杀死超过10分钟的进程.我已经知道进程ID是什么了.我每10分钟循环一次数组,看看是否有任何挥之不去的触发器,并且需要被杀死.有人对此有任何快速的想法吗?

ps -eo uid,pid,etime 3233332 | egrep ' ([0-9]+-)?([0-9]{2}:?){3}' | awk '{print $2}' | xargs -I{} kill {}

解决方法:

就像真正的僵尸一样,僵尸进程无法杀死 – 它们已经死了.

当父进程调用wait()以获取退出代码或其父进程退出时,它们将消失.

哦,你根本就不是在谈论Zombie进程.这个bash脚本应该与你所追求的一致:

ps -eo uid,pid,lstart |
    tail -n+2 |
    while read PROC_UID PROC_PID PROC_LSTART; do
        SECONDS=$[$(date +%s) - $(date -d"$PROC_LSTART" +%s)]
        if [ $PROC_UID -eq 1000 -a $SECONDS -gt 600 ]; then
            echo $PROC_PID
        fi
     done |
     xargs kill

这将终止UID 1000拥有的运行时间超过10分钟(600秒)的所有进程.您可能希望将其过滤到您感兴趣的PID – 可能是通过父进程ID或类似的?无论如何,这应该是继续下去的事情.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐