여기서 나의 첫 번째 성향은 SAR 또는 일반적으로 sysstat 패키지에 내장된 것입니다. 그러나 실제로 그렇다면 이 해결책을 찾을 수 없는 것 같습니다.
내가 보고 싶은 것은 가능하다면 sysstat를 통해 보는 것이 SAR 로그와 거의 동일한 형식의 프로세스 사용량(메모리, CPU 등) 기록 로그입니다(아직 SAR 파일을 통해 직접 사용할 수 없는 경우). 모니터링 소프트웨어가 있다는 것은 알고 있지만, 대부분 비침해적인 패키지, 실제로 statsd/collectd를 통해 상대적으로 직관적으로 구문 분석할 수 있는 패키지를 찾고 있습니다.
답변1
sar 명령을 백그라운드 프로세스로 실행합니다. 이에 대한 구문은 다음과 같습니다.
sar -o datafile interval count >/dev/null 2>&1 &
모든 데이터는 바이너리 형식으로 캡처되어 파일(데이터파일)에 저장됩니다. 그런 다음 -f 옵션을 사용하여 sar 명령을 사용하여 데이터를 선택적으로 표시할 수 있습니다. 간격 초 간격으로 카운트 레코드를 선택하려면 간격 및 카운트 매개 변수를 설정하십시오. count 매개변수를 설정하지 않으면 파일에 저장된 모든 레코드가 선택됩니다. 이러한 방식으로 데이터를 수집하면 일정 기간 동안 시스템 사용량을 특성화하고 최대 사용량 시간을 결정하는 데 유용합니다.
답변2
5분마다 상위 프로세스의 리소스 사용량을 인쇄하는 멍청한 while 루프를 사용할 수 있습니다.
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
echo;
sleep 300;
done
위의 내용은 가장 많은 CPU 사용량을 사용하는 상위 9개 프로세스를 출력합니다. 가장 많은 메모리를 사용하는 상위 9개 프로세스를 얻으려면 다음을 사용하십시오.
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
echo;
sleep 300;
done
예
다음 예제 출력은 Apache가 CPU를 가장 많이 소비하는 프로세스임을 보여줍니다.
Sun Jan 28 23:46:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.7
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.5
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Sun Jan 28 23:51:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.6
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.4
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
제한 사항
분명히 이것은 당신에게만 알려줄 것이기 때문에 짜증납니다.동시에 일어나는명령이 실행되는 정확한 순간(5분마다)의 리소스 사용량입니다.
이상적으로는 해당 기간 동안의 평균 리소스 사용량을 알려줍니다.간격출력 사이의 시간. 하지만 이 답변이 공개된 지 7년이 지났고 좋은 답변이 없는 것을 보면 없는 것보다는 낫습니다.
세션에서 밤새 실행되도록 놔두면 screen
아침에는 최소한의 노력으로 더 나은 통찰력을 얻을 수 있습니다.