Сначала вы можете отобразить все 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