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

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

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

CPU top명령을 모니터링하는 것은 좋은 옵션인 것처럼 보이지만 읽기 및 쓰기 명령은 iotop편리한 옵션처럼 보입니다.

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

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

감사해요!

답변1

어때요?PID 통계? . 시도해 보셨나요? 모니터링하려는 프로세스의 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}'

그러면 지연 시간이 다음으로 설정됩니다.12. 모니터링내 프로세스그리고 현재를 인쇄하세요CPU(필드 7),읽기 바이트/초(필드 28) 및쓴 바이트/초(필드 32). 여기의 읽기/쓰기 카운터에는 캐시 바이트가 포함되지 않습니다. 이를 포함하려면 필드를 선택하십시오.26그리고30대신에.

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

답변4

/proc/$PID/status콘텐츠를 정기적으로 확인해 보면 원하는 정보를 많이 얻을 수 있습니다.

관련 정보