Как убить процесс, работающий дольше x секунд, по имени процесса?

См. параметры objdump. Например:

objdump -d a.o

objdump -D a.o

objdump -S a.o

enter image description here

0
27.09.2021, 16:36
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...)вместо отправки сигнала жесткого уничтожения SIGKILLkill -9...), в зависимости от того, почему именно и при каких условиях вы хотите завершить рассматриваемые процессы Chrome. Для получения дополнительной информации по этому вопросу см., например, разницу здесь .

0
27.09.2021, 20:49

И killall, и pkill имеют концепцию селектора «старше, чем».

killall 30s chrome
pkill --older 30 chrome
2
28.09.2021, 23:42

Теги

Похожие вопросы