Linux

如何殺死早於“t”的程序?

  • September 30, 2019

首先,是的,我已經看到了這個問題:

查找(並殺死)舊程序

那裡的答案不正確,不起作用。我已經投票並做出了相應的評論。

當列出時,我想殺死的程序如下所示ps aux | grep page.py

阿帕奇 424 0.0 0.1 6996 4564 ?S 07:02 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 2686 0.0 0.1 7000 3460 ?S Sep10 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 2926 0.0 0.0 6996 1404 ?S Sep02 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 7398 0.0 0.0 6996 1400 ?S Sep01 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 9423 0.0 0.1 6996 3824 ?S Sep10 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 11022 0.0 0.0 7004 1400 ?S Sep01 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 15343 0.0 0.1 7004 3788 ?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 15364 0.0 0.1 7004 3792 ?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 15397 0.0 0.1 6996 3788 ?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 16817 0.0 0.1 7000 3788 ?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 17590 0.0 0.0 7000 1432 ?S Sep07 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 24448 0.0 0.0 7000 1432 ?S Sep07 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py
阿帕奇 30361 0.0 0.1 6996 3776 ?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py

我正在尋找設置一個簡單的每日 cron 來查找並殺死任何page.py超過一小時的程序。

上述問題的公認答案不起作用,因為它與時間範圍不匹配,它僅匹配從 7 天到 7 天 23 小時 59 分 59 秒執行的程序。我不想殺死執行了 1-2 小時的程序,而是殺死任何超過1 小時的程序。

使用上述問題的另一個答案find不起作用,至少在 Gentoo 或 CentOS 5.4 上不起作用,如果遵循所述警告的建議,它要麼吐出警告,要麼不返回任何內容。

GNU Killall 可以使用程序名殺死超過給定年齡的程序。

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1h page.py;fi

find 並不總是有效,並非每個系統都有可用的 etimes,它可能是我的正則表達式 newb 狀態,但我認為您不需要除此之外的任何東西:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • 列出所有程序並提供列 PID、ELAPSED(etimes = seconds)、COMMAND、USER、TT(感謝@ahoffman)
  • 用 awk 列印第 4 列 ( $ 4, USER) contains text ‘builder’, and 5th column ( $ 5, TT) 包含文本“pts”並且 ELAPSED 列的值大於 600 秒(感謝@amtd)

然後,您可以通過管道將其殺死或任何您需要的東西。

引用自:https://serverfault.com/questions/181477