web-dev-qa-db-ja.com

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

./myprocessなど、特定のプロセスのCPU使用率、ディスクの読み取り/書き込み使用率を監視したいと思います。

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

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

私の難しさは、3つの変数、つまり読み取り/秒、書き込み/秒、CPU使用率/秒だけを保存したいということです。 topiotopからの上記の3つの変数の出力を組み合わせて、ログファイルに保存するスクリプトを手伝ってもらえますか?

ありがとう!

4
0x0

PidStat ?はどうですか。試しましたか?監視したいプロセスにPidが必要な場合もありますが、それはpsコマンドと少しのawkチョップチョッピングでかなり簡単に取得できるはずです。

これはパッケージsysstatの一部であり、apt-get install sysstatと入力して.debベースのシステムにインストールできます。

1
BorrajaX

Prtstat(Sudo apt-get install psmisc)の使用を試みることができます:

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

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

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

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

このタスクには audria を使用できます。

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

これにより、遅延が1秒に設定され、myprocessが監視され、現在の[〜#〜が出力されます。 ] cpu [〜#〜](フィールド7)、読み取りバイト/秒(フィールド28)および書き込みバイト/秒(フィールド32)。ここでの読み取り/書き込みカウンターは、キャッシュされたバイトを除外します。それらを含める場合は、代わりにフィールド26および30を選択します。

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

1
scai

/proc/$PID/statusの内容を定期的に確認してみてください。それはあなたが探している情報のかなりの量をあなたに与えるはずです。

0
DopeGhoti