Linux "top" 명령의 값을 추적할 수 있는 방법이 있습니까?

Linux "top" 명령의 값을 추적할 수 있는 방법이 있습니까?

나는 특정 프로세스의 CPU 비율을 모니터링하기 위해 Linux "top" 명령을 사용하고 있습니다. 값이 몇 초마다 계속 바뀌는데, 별도의 파일이나 그래픽 표현으로 값을 추적할 수 있는 방법이 있나요? 이를 수행하는 데 사용할 수 있는 쉘 스크립트가 있습니까?

답변1

이 질문에 대한 대답은 필요에 따라 간단한 명령일 수도 있고 복잡한 모니터링 도구일 수도 있습니다.

간단히 실행하여 시작하고 top -b -n 1 >> file.txt(-b는 배치 모드를 의미하고, -n 1은 top의 단일 반복 실행을 의미) 출력을 file.txt에 저장(추가)할 수 있습니다. 예를 들어 top -b -n 1 | grep init"init" 프로세스에 대한 데이터만 보거나 top -b -n 1 | grep "init" | head -1 |awk '{print $9}'init 프로세스 데이터의 열 9(CPU 값)을 가져오기 위해 "상위" 출력을 필터링할 수도 있습니다 .

쉘 스크립트에서 사용하려면 다음을 수행하십시오.

CPU=$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $9}')
MEM=$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $10}')

또는 top을 한 번만 수행하십시오.

read CPU MEM <<<$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $9 " " $10}')

(grep, head 및 awk를 하나의 awk 명령으로 결합할 수 있지만 단순화를 위해 별도의 명령을 사용합니다.)

이 예에서는 top을 사용했지만 다른 측정 항목에 대한 대안도 있습니다( , , , , 확인 및 sar/proc/* 읽기).iostatvmstatiotopftop

이제 데이터(CPU 사용량)에 액세스할 수 있습니다. 이 예에서는 이를 텍스트 파일에 추가합니다. 하지만 다른 도구를 사용하여 데이터를 저장하고 그래프로 표시할 수도 있습니다. gnuplot/python/openoffice를 사용하여 csv 및 그래프로 저장하고, zabbix, rrdtools, cacti 및 기타 모니터링 및 그래프 도구를 사용할 수 있습니다. CPU 사용량, 메모리 사용량, 디스크 IO 및 사용자 정의 지표(mysql 연결 수 등)와 같은 차트를 수집하고 그립니다.

편집: 마지막으로 귀하의 질문에 구체적으로 대답하기 위해 간단한 테스트를 위해 변경 사항을 쉽게 추적하려면 top -b -n 1 >> /tmp/file.txt/etc/crontab 파일에서 5분마다(또는 /5 아래를 바꾸는 경우 다른 간격) top을 실행할 수 있습니다.

0-59/5 * * * * root top -b -n1 >>/tmp/output.txt

(단일 프로세스 데이터에만 관심이 있는 경우 위 명령에서 grep + head -1을 사용하십시오.)

output.txt가 커지므로 매일 또는 매주 재설정하려면 다른 crontab 항목을 사용하여 "rm"할 수 있습니다.

답변2

당신은 그것을 사용할 수 있습니다 ps -o pid,pcpu $(pgrep particular-process) >> file. 정기적으로 실행하십시오.

관련 정보