반응형
프로세스 이름으로 필터링하고 CPU 사용량을 기록합니다.
이름별로 프로세스를 필터링하고 1 초마다 해당 프로세스의 CPU 사용량을 로그 파일에 쓸 수있는 Linux top 명령에 대한 옵션이 있습니까?
top
& pgrep
top
프로세스 이름으로 출력을 필터링하려면를 사용 pgrep
하여 프로세스 이름 으로 PID 목록을 가져온 다음 -p
옵션에 전달할 수 있습니다 top
.
예를 들면 :
top -p $(pgrep -d',' http)
참고 :이 -d','
옵션은 쉼표로 PID를 구분하며, top -p
. 참고 2 : top
에서 지정한 이름과 일치하는 실행중인 프로세스가 없으면 실패 메시지를 반환합니다 pgrep
.
의 결과를 top
파일에 쓰려면 -n 1
옵션 (한 번만 반복)을 사용하고 출력을 로그 파일로 리디렉션합니다.
top -p $(pgrep -d',' http) -n 1 >> your_log_file
매초마다 그렇게하려면 아마도 a while
루프가 할 sleep
것입니까?
while :; do top -p $(pgrep -d',' http) -n 1 >> your_log_file; sleep 1; done
각 항목의 타임 스탬프를 지정하려면의 출력을 추가 할 수 있습니다 date
. 예
while :; do top -p $(pgrep -d',' http) -n 1 >> log.txt; date >> log.txt; sleep 1; done
또 다른 옵션은 다음과 같습니다.
top -b -d 1 -p $(pgrep -d',' java) -n 120 > log.txt
- -d 옵션을 사용하면 top이 데이터를 새로 고치는 데 사용하는 빈도를 설정할 수 있습니다.
- -b 옵션은 top의 기존 인터페이스가 사용되지 않음을 의미합니다. 대신 모든 것을 표준 출력으로 보낸 다음 파이프 (|) 또는 리디렉션 (>)을 사용할 수 있습니다.
- -n 옵션은 top이 실행해야하는 반복 횟수를 알려줍니다.
그 후에 다음을 입력 할 수 있습니다.
cat log.txt | grep USER_OF_PROCESS
프로세스의 실행 시간과 % CPU, 메모리 등을 볼 수 있습니다.
#You can run following script as ./cpurecorder.sh pid filename
#It will generate output file with memory usage and cpu utilisation.
#You can log other variable by searching man for ps.
`enter code here`filepath=/home/rtcsadm # modify as desired
interval=20 # reports per minute
timelimit=6000 # how long to run, in seconds
mydate=`date "+%H:%M:%S"` # the timestamp
freq=$((60/$interval)) # for sleep function
while [ "$SECONDS" -le "$timelimit" ] ; do
ps -p$1 -opid -opcpu -opmem -ocomm -c | grep $1 | sed "s/^/$mydate /" >> $filepath/$2.txt
sleep 3
mydate=`date "+%H:%M:%S"`
done
참고 URL : https://stackoverflow.com/questions/8710584/filter-by-process-name-and-log-cpu-usage
반응형
'Programing' 카테고리의 다른 글
내 pidfile이 / var / run에 있어야합니까? (0) | 2020.11.05 |
---|---|
Node.js "필수"함수 및 매개 변수 (0) | 2020.11.05 |
속성에 따옴표없이 JSON.stringify? (0) | 2020.11.05 |
Jekyll에서 if 문을 어떻게 연결합니까? (0) | 2020.11.05 |
Java에서 프로그래밍 방식으로 인터페이스의 모든 구현 목록을 얻으려면 어떻게해야합니까? (0) | 2020.11.05 |