내 목표는 쉽게 분석할 수 있는 시계열에서 특정 명령의 리소스 사용량을 추적하는 것입니다. 다음은 node
3개의 배치에 대한 모든 명령을 추적하는 예입니다.
top -b -n3 | grep node
222097 root 20 0 954444 672616 32452 S 105.9 4.1 46:23.02 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
222097 root 20 0 954444 672616 32452 S 159.8 4.1 46:27.83 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
222097 root 20 0 954444 672616 32452 S 167.1 4.1 46:32.86 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
문제는 배치를 구별하는 쉬운 방법이 없다는 것입니다. 이 간단한 예에서는 중단점을 쉽게 볼 수 있지만 더 긴 시리즈나 더 많은 프로세스가 있는 시리즈에서는 중단점을 확인하기가 어렵습니다.
약간의 무거운 스크립팅을 사용하면 멋진 작업을 수행할 수 있지만 저는 단순하게 유지하고 싶었습니다. 원하는 출력:
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
------------------------------------------------------------------------------
222097 root 20 0 954444 672616 32452 S 159.8 4.1 46:27.83 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
------------------------------------------------------------------------------
222097 root 20 0 954444 672616 32452 S 167.1 4.1 46:32.86 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
답변1
이 불완전한 bash 스크립트는 이 기사를 작성하는 것보다 시간이 덜 걸렸습니다.
# /bin/bash
echo "Monitor process $1"
echo " for $2 batches"
for i in $(seq 1 $2); do
top -b -n 1 | grep $1
echo "-------------------------------------------------";
sleep 1
done