
私の目標は、簡単に分析できる時系列で特定のコマンドのリソース使用量を追跡することです。以下は、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