특정 프로세스에 대한 모든 통계를 기록하는 스크립트

특정 프로세스에 대한 모든 통계를 기록하는 스크립트

CPU 사용량, 특정 프로세스에 대한 디스크 읽기/쓰기 사용량을 모니터링하고 싶습니다 ./myprocess.

CPU 명령을 모니터링하는 것은 top좋은 옵션인 것 같고 읽기 및 쓰기에는 iotop편리한 옵션인 것 같습니다.

예를 들어 매초 읽기/쓰기를 모니터링하려면 명령을 사용합니다 iotop -tbod1 | grep "myprocess".

내 어려움은 읽기/초, 쓰기/초, CPU 사용량/초라는 세 가지 변수만 저장하고 싶다는 것입니다. 위에서 언급한 세 가지 변수의 출력을 결합 top하고 iotop로그 파일에 저장하는 스크립트를 도와주실 수 있나요 ?

감사해요!

답변1

어때?PidStat?. 시도해 보셨나요? 모니터링하려는 프로세스에 대해 Pid가 필요할 수 있지만 명령을 사용 ps하고 약간의 awk작업을 수행하면 상당히 쉽게 얻을 수 있습니다.

sysstat.deb 기반 시스템에 다음을 입력하여 설치할 수 있는 패키지의 일부입니다.apt-get install sysstat

답변2

prtstat( )를 사용해 볼 수 있습니다 sudo apt-get install psmisc:

watch -n1 prtstat <PID> | tee mylog.log

매초마다 프로세스 통계를 덤프합니다. 해당 데이터를 구문 분석하려면 원시 버전(-r)을 사용하세요.

예를 들어, utime을 원할 경우 위 명령을 다음과 같이 확장할 수 있습니다.

prtstat -r 30557 | grep -w utime | awk '{print $4}'

답변3

당신이 사용할 수있는오드리아이 작업의 경우:

audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'

이렇게 하면 지연이 다음으로 설정됩니다.1두 번째, 모니터내 프로세스그리고 현재를 인쇄하세요CPU(필드 7),읽기 바이트/초(필드 28) 및쓰기 바이트/초(필드 32). 여기의 읽기/쓰기 카운터는 캐시된 바이트를 제외합니다. 이를 포함하려면 필드를 선택하세요.26그리고30대신에.

audria는 필요한 경우 프로세스를 실행하여 처음부터 바로 모니터링할 수도 있습니다. 더 짧은 간격을 선택하거나 감시할 여러 PID를 지정할 수도 있습니다.

답변4

/proc/$PID/status주기적으로 의 내용을 살펴보세요 . 그러면 당신이 찾고 있는 상당한 양의 정보가 제공될 것입니다.

관련 정보