2

時間の経過とともにアービットCPUとメモリを消費するタスクがあります。次のLinuxコマンドを実行する出力が表示されます。

mpstat -u 1 -P ALL

出力は次のようになります。

02:22:14 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
02:22:15 PM  all    4.51    0.00    0.11    0.00    0.00    0.00    0.00    0.00   95.37
02:22:15 PM    0    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   99.00
02:22:15 PM    1   **78.22**    0.00    0.99    0.00    0.00    0.00    0.00    0.00   20.79

02:22:15 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    8    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM   16    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   17    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   18    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   19    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:22:15 PM   20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   21    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   22    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
02:22:15 PM   23    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

4番目の列と3番目の行a[3][4]、つまりbash / python/perlで20秒ごとに78.22にある値を取得したいと思います。したがって、必要なスクリプトはmpstatコマンドを実行し、指定された列の値を出力し、その値に基づいてグラフを作成します。必要な値を.datファイルに追加して、グラフを作成するgnuplotまたはアプリを実行することを考えていました。

行く方法について何か提案はありますか?

4

2 に答える 2

5

を使用して、3行目と4番目のセルを取得できますawk。次のコードは、の出力からこのセルを取得mpstatし、現在のUNIXタイムスタンプとともに統計ファイルに追加します。

mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), $4}' >> stats.txt

このコマンドを20秒ごとに実行するには:

watch -n 20 "mpstat -u 1 -P ALL | awk 'NR==4 {print systime(), \$4}' >> stats.txt"

次に、次のようにプロットしgnuplotます。

cat stats.txt | gnuplot -p -e 'set datafile separator " "; plot "-" using 1:2 with lines'
于 2012-12-11T23:03:39.633 に答える
0

次を試してください

#!/bin/bash
function _mpstat() {
    while :; do
        arr=( $(mpstat -P 1 | tail -n 1) )
        echo "${arr[3]}"
        sleep 20
    done >> file.txt
}
_mpstat &
echo "_mpstat PID: $!"

説明

  • while :; do無限ループ
  • $(mpstat -P 1 | tail -n 1)MpstatはCPU1のみで、最後の行-P 1をテールし、戻り値-n 1$()
  • arr=( ... )コマンドは値を配列に返します
  • echo "${arr[3]}"エコー配列インデックス3
  • sleep 2020秒間寝る
  • >> file.txtwhileループブロック内のファイルにstdoutを送信します。
  • _mpstat &関数をバックグラウンドプロセスに送信します&
  • echo "_mpstat PID: $!関数のPIDを返します

PIDをgrepしてその親を表示し、必要に応じて両方を強制終了できます。

于 2012-12-12T05:12:15.243 に答える