サーバーの負荷を見る場合、unixコマンドでログを抽出できたりすると何かと便利です。
いままでも下記の記事でこれらの出力を行いました。
ログ抽出コマンド特集 その1 cat+grep+sort
私が本日やりたかったことは下記のようなデータの取得です。
- sarコマンドで特定の日付のデータを抽出し、
- cpu使用率(%user)の値が高いもの上位5つを取ってくる
結論からいいますと下記のようなコマンドになります。
1 |
sar -f /var/log/sa/sa17 | sort -nk3 | tr -s ' ' "\t" |cut -f 1,3 | tail -5 |
出力結果
11時50分01秒 7.21
17時20分01秒 7.83
14時40分01秒 8.89
16時20分01秒 9.13
18時20分01秒 12.35
ポイントとしては、
- sort -nk + 何列目 で並び替え sort -nk3は3列目を数字とみて並び替えるという意味です。
- tr -s ' ' "\t" で空白をタブに置換します。(次のcutで使うためです。)
- cut -f 1,3 で1行目と3行目を抽出します。(cutでは区切り文字をタブで扱うために空白ではなくタブで置換しておく必要があります。)
- tail -5 で5つまでを出します。(sortで昇順で出してheadとかでもできます。)
置換の部分はtrではなくsed,cutの部分をawkでもできるかと思います。