특정 개수의 PID가 기준을 충족하는 경우에만 프로세스를 종료합니다.

특정 개수의 PID가 기준을 충족하는 경우에만 프로세스를 종료합니다.

컨테이너 내부에서 실행되는 (남용되는) docker-compose 상태 확인에 사용하고 있는 이 라이너를 개선하려고 합니다.

ps -C program.bin -o pid,pcpu --no-headers | awk '$2 > 98 {print $1}' | xargs kill -9

현재 형식에서는 CPU 사용률이 98%를 넘는 PID를 필터링하고 일치하는 PID를 즉시 삭제합니다.

그러나 생성된 PID의 정확한 개수가 활용도가 높은 경우에만 종료하고 싶습니다. 즉, 하나의 program.bin PID가 98% 이상의 CPU 사용량을 갖는 경우 종료하지 말고 그 중 2개가 조건을 충족하는 경우에만 종료하고 싶습니다. ), 둘 다 죽여라). 이 작업을 수행하는 방법에 대한 조언이 있습니까? 감사해요!

답변1

... | awk '
$2 >= 98 {c++; m[$1]} 
END { if (c >=2 ) for(i in m) print i }' | xargs -r kill -9

리소스를 소비하는 프로세스를 배열에 저장하고 n여러 프로세스가 임계값을 초과하는 경우에만 인쇄하고, 그렇지 않으면 아무것도 인쇄하지 않습니다.

인수가 제공되지 않으면 이 -r옵션은 xargs명령을 실행하지 않고 종료하도록 지시합니다. 그렇지 않으면 실행하십시오 kill.

관련 정보