Linux

如何通過程序名稱終止執行超過 x 秒的程序?

  • September 28, 2021

我想殺死所有執行超過 30 秒的 chrome 程序。

目前我在下面使用這個命令,但無論如何它都會殺死所有 chrome 程序:

killall -9 chrome

首先,您可以顯示所有驗證執行時間標準的 PID:

> \ps -eo pid,etimes,args | \
sed -nE 's/^\ +//;s/\ +/ /g;/chrome/p' | \
cut -d' ' -f1,2 | while read -r -a ARRAY; do 
    [ "${ARRAY[1]}" -gt 30 ] && printf "%s\n" ${ARRAY[0]}
done

一旦滿意這會產生您想要的結果,只需將printf命令替換為kill -9,如下所示:

> \ps -eo pid,etimes,args | \
sed -nE 's/^\ +//;s/\ +/ /g;/chrome/p' | \
cut -d' ' -f1,2 | while read -r -a ARRAY; do 
    [ "${ARRAY[1]}" -gt 30 ] && kill -9 ${ARRAY[0]}
done

不是您的問題的一部分,但您可能需要考慮發送軟/禮貌的終止SIGTERM信號(僅kill ...或等效地kill -15 ...)而不是發送硬終止SIGKILL信號(與kill -9 ...),具體取決於您想要終止的確切原因和條件有問題的 Chrome 程序。有關該主題的更多資訊,請參見此處的區別。

killall 和 pkill 都有“早於”選擇器的概念。

killall 30s chrome
pkill --older 30 chrome

引用自:https://unix.stackexchange.com/questions/670872