지난 X초 동안 가장 많은 RAM을 사용한 프로세스를 찾는 방법은 무엇입니까?

지난 X초 동안 가장 많은 RAM을 사용한 프로세스를 찾는 방법은 무엇입니까?

이 문제를 해결하는 데 도움을 주실 수 있나요? RAM 사용량(RAM뿐만 아니라 CPU 및 네트워크)을 모니터링하고 지난 X초 동안 가장 많은 RAM을 사용하는 3개 프로세스를 표시하는 bash 스크립트를 작성하려고 합니다. 다음을 실행하여 가장 많은 메모리를 사용하는 프로세스를 찾을 수 있다는 것을 알고 있습니다.

ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 3

그런데 이런 일이 어떻게 반복될 수 있습니까? 나는 지금 여기서 무슨 일이 일어나고 있는지 보고 싶지 않지만 60초 동안 모니터링하고 가장 많은 RAM을 사용하는 상위 3개 프로세스를 확인합니다.

답변1

나는 dstat명령을 사용합니다. 굉장히 유용하다. 다음을 사용하여 탐색해 보세요.man dstat

예를 들어:

3초마다 가장 비싼 메모리를 찾습니다.

#dstat --top-mem 3 --most-expensive- memory process firefox 1430M firefox 1430M firefox 1431M firefox 1435M firefox 1435M firefox 1435M firefox 1435M firefox 1438M

마찬가지로 CPU, 네트워크, IO 등에 대한 포인트를 설정할 수 있습니다.

dstat --top-cpu 3 -most-expensive- cpu process
firefox 3.5 firefox 4.5 firefox 2.4 firefox 2.6 firefox 2.8 firefox 2.0 firefox 2.8

답변2

메모리 소비가 가장 많은 상위 3개 프로세스 명령:

ps auxxx --sort=-rss |헤드-4

CPU를 가장 많이 차지하는 세 가지 프로세스는 다음과 같습니다.

ps auxxx --sort=-%cpu |헤드-4

Cronjob을 통해 매분마다 이러한 스크립트를 실행할 수 있습니다.

          • /tmp/serverhealth.sh

관련 정보