Linux
如何通過程序名稱終止執行超過 x 秒的程序?
我想殺死所有執行超過 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