답변:
표준 ps
으로 충분합니다.
while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done
결과:
0.0 3352
0.3 31640
0.4 36924
0.5 36052
...
첫 번째 필드는 CPU 사용률 (%)이고 두 번째 필드는 물리적 메모리 사용량 (KB)입니다.
sar
. 일부 버전은 sar -x PID
다른 버전을 사용 합니다 pidstat -p PID
.
특정 프로세스에 필요한 CPU 시간을 관찰하려고합니다.
CentOS 용 CPU 통계 도구 를 제안하려고 했습니까? 그러나 이것은 하나의 프로세스가 아니라 전체 시스템에 적용됩니다.
하나의 프로세스는 ps 출력에 CPU 시간을 표시합니다.
$ ps -ef | egrep blah
root 13988 11152 0 Dec16 ? 00:00:05 sshd: xxx [priv]
xxx 14024 13988 0 Dec16 ? 00:06:00 sshd: xxx@pts/0
xxx 14032 14024 0 Dec16 pts/0 07:00:00 -bash
root 1194 679 0 Apr24 ? 2-05:15:14 [kswapd0]
root 1195 679 0 Apr24 ? 2-06:35:49 [kswapd1]
이 시점에서 출력을 파이썬으로 구문 분석하고 날짜 계산을 해보십시오. 황금입니다.
다음 명령은 특정 프로세스에 대해 40 초마다 평균 CPU 및 메모리 사용량을 가져옵니다 (pid)
pidstat 40 -ru -p <pid>
내 경우에 대한 출력 (CPU 사용을 위해 처음 두 줄, 메모리를 위해 두 번째 두 줄) :
02:15:07 PM PID %usr %system %guest %CPU CPU Command
02:15:47 PM 24563 0.65 0.07 0.00 0.73 3 java
02:15:07 PM PID minflt/s majflt/s VSZ RSS %MEM Command
02:15:47 PM 24563 6.95 0.00 13047972 2123268 6.52 java