프로세스 이름으로 x초 이상 실행 중인 프로세스를 종료하는 방법은 무엇입니까?

프로세스 이름으로 x초 이상 실행 중인 프로세스를 종료하는 방법은 무엇입니까?

30초 이상 실행되는 모든 크롬 프로세스를 종료하고 싶습니다.

현재 아래 명령을 사용하고 있지만 모든 크롬 프로세스가 종료됩니다.

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 ...또는 동등하게 사용) 를 보내는 것을 고려할 수 있습니다. 문제가 있는 Chrome 프로세스. 이 주제에 대한 자세한 내용은 차이점을 참조하세요.kill -15 ...SIGKILLkill -9 ...여기예를 들어.

답변3

사용:

ps -eo pid,etimes,args |grep chrome

etimes프로세스가 시작된 이후 경과된 시간(초)이 표시됩니다.

그 다음에:

kill -9 <pid>

관련 정보