
주기적으로 "ps aux"를 실행하여 다음 형식으로 값을 출력합니다.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
내가 이해한다면시간누적 CPU 시간은 누적이 프로세스에 소요된 총 CPU 시간을 나타낸다는 의미입니다. 여기서는 이 값이 시간이 지남에 따라 증가할 수 있다고 가정합니다. 그러나 나는 실제 가치가떨어지다(PID는 변경되지 않았으므로 프로세스가 다시 시작되지 않았음을 의미합니다.) 그래서 내 질문은 왜 이런 행동입니까?
생성된 데이터(마지막 열 이전에 문제가 있음)의 예는 다음과 같습니다.
2017-08-04T07-05-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:33 /usr/local/myprocess
2017-08-04T07-10-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:34 /usr/local/myprocess
2017-08-04T07-15-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:35 /usr/local/myprocess
2017-08-04T07-20-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:37 /usr/local/myprocess
2017-08-04T07-25-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:38 /usr/local/myprocess
2017-08-04T07-30-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:39 /usr/local/myprocess
2017-08-04T07-35-01 user 16493 0.3 0.4 59536 28416 ? Sl Aug01 15:40 /usr/local/myprocess
2017-08-04T07-40-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:21 /usr/local/myprocess
2017-08-04T07-45-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:21 /usr/local/myprocess
2017-08-04T07-50-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:21 /usr/local/myprocess
2017-08-04T07-55-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
2017-08-04T08-00-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
2017-08-04T08-05-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
2017-08-04T08-11-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
2017-08-04T08-15-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
2017-08-04T08-20-01 user 16493 0.0 0.4 60560 29608 ? Sl Aug01 1:22 /usr/local/myprocess
cronjob으로 실행되고 내 데이터를 생성하는 전체 스크립트는 다음과 같습니다(실제 프로세스 이름만 다름).
#!/usr/bin/env bash
proc_names="MyProcessToWatch1 MyProcessToWatch2 MyProcessToWatch3"
current_date=$(date "+%Y-%m-%dT%H-%M-%S")
hostname=$(hostname)
for proc_name in ${proc_names}
do
procs_to_watch=$(ps -ef | grep "${proc_name}" | grep -v grep | grep -v vi | grep -v tail | grep -v less | grep -v "ps -" | awk '{print $2}')
for proc_id in ${procs_to_watch}
do
proc_start_ts=$(ls -ld --time-style=+"%Y-%m-%dT%H-%M-%S" /proc/${proc_id} | awk '{ print $(NF-1) }')
log_file="/tmp/performance_data/performance_${proc_name}_${proc_start_ts}_${hostname}_${proc_id}.log"
echo -n "${current_date} " >> ${log_file} 2>&1
ps aux | grep "${proc_name}" | grep ${proc_id} >> ${log_file} 2>&1
done
done