特定のプロセスのすべての統計を記録するスクリプト

特定のプロセスのすべての統計を記録するスクリプト

たとえば、特定のプロセスの CPU 使用率やディスクの読み取り/書き込み使用率を監視したい./myprocess

CPUtopコマンドを監視するのは良いオプションのようで、読み取りと書き込みにはiotop便利なオプションのようです。

たとえば、毎秒の読み取り/書き込みを監視するには、コマンドを使用しますiotop -tbod1 | grep "myprocess"

問題は、保存する変数が読み取り/秒、書き込み/秒、CPU 使用量/秒の 3 つだけであることです。上記の 3 つの変数の出力を組み合わせてログ ファイルに保存するスクリプトについて教えていただけますtopiotop?

ありがとう!

答え1

いかがでしょうかピッドスタット?。試しましたか? 監視するプロセスの Pid が必要になるかもしれませんが、コマンドpsと少しのawk作業で簡単に取得できるはずです。

sysstatこれは、.debベースのシステムにインストールできるパッケージの一部です。apt-get install sysstat

答え2

prtstat ( ) を使ってみることもできますsudo apt-get install psmisc:

watch -n1 prtstat <PID> | tee mylog.log

プロセス統計を毎秒ダンプします。これらのデータを解析したい場合は、生のバージョン (-r) を使用してください。

たとえば、utime が必要な場合は、上記のコマンドを次のように拡張できます。

prtstat -r 30557 | grep -w utime | awk '{print $4}'

答え3

使用できますオードリアこのタスクの場合:

audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'

これにより遅延が設定されます12番目、モニターマイプロセス現在のCPU(フィールド7)読み取りバイト数/秒(フィールド28)および書き込みバイト数/秒(フィールド32)。ここでの読み取り/書き込みカウンタはキャッシュされたバイトを除外します。キャッシュされたバイトを含める場合は、フィールドを選択してください。26そして30その代わり。

audria は、必要に応じてプロセスを実行して最初から監視することもできます。また、より短い間隔を選択したり、監視する複数の PID を指定したりすることもできます。

答え4

定期的に のコンテンツを確認してみてください/proc/$PID/status。そうすれば、探している情報がかなり得られるはずです。

関連情報