我想杀死所有运行时间超过 30 秒的 chrome 进程。
目前我正在使用下面的这个命令,但它会杀死所有 chrome 进程:
killall -9 chrome
答案1
Killall 和 pkill 都有“早于”选择器的概念。
killall 30s chrome
pkill --older 30 chrome
答案2
首先,您可以显示验证执行时间标准的所有 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 进程。有关该主题的更多信息,请参阅差异这里例如。
答案3
使用:
ps -eo pid,etimes,args |grep chrome
etimes
将显示自进程启动以来经过的时间(以秒为单位)。
然后:
kill -9 <pid>