컨테이너 내부에서 실행되는 (남용되는) 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
.