Linux‎ > ‎

ちょっと使えるTips

独立したページにするほどでもない、Linuxに関するちょっとしたTipsをメモしておきます。


画面をクリア

clear
※シェルスクリプトの先頭でこれを書くと、実行時に画面をクリアした状態からスタートします。

ショートカットの場合
Ctrl+L

ログ集計

ファイルから特定のパターンの文字列を抽出し同じ文字列ごとに集計
grep -Eo "パターン" ファイル名 | sort | uniq -c | sort -r

例:[…Action]が呼ばれた回数を、Actionの種類ごとに集計
grep -Eo "\[.+Action]" ….log | sort | uniq -c | sort -r

実行結果例
    400 [aaaAction]
    300 [cccAction]
    100 [aaaAction]
     50 [zzzAction]

ログをフィルタリングしながら監視

ログをtailしながらgrepでフィルタリングし、結果を画面表示しながらファイルにも出力する方法です。
tail -f ログ名 | grep --line-buffered フィルタリング条件 | tee -a フィルタリング結果ファイル名

「--line-buffered」はバッファリングに関する指定で、この指定により行単位で処理する。grep は標準出力先がファイルへのリダイレクトやパイプならば出力をバッファリングし処理を効率的に行なおうとする。その為、grep内のバッファの状況によって、ログには行が出力されていても遅れて表示されるように見える。この指定がないとリアルタイムに出力をしない。

パイプで結合した処理の終了ステータスを個別に取得する方法

パイプで結合した処理の終了ステータスは、PIPESTATUSという特殊変数に配列として格納されます。
$ exit 0 | exit 1 | exit 2
$ echo ${PIPESTATUS[@]}
0 1 2

参考

標準入力を標準出力とファイルに出力する

tee

使用例
# これだと標準出力には出ない
vmstat 5 > vmstat.txt

# これだと標準出力にもファイル出力もする
vmstat 5 | tee vmstat.txt

コマンドの実体を表示

which コマンド

使用例
$ which ssh
/usr/bin/ssh

コマンドを定期的に実行

watch コマンド
watch -n 5 コマンド
watch -d コマンド

-d:前回実行時と変化した部分をハイライトする
-n x:実行間隔の指定 (x秒。無指定時は2秒)


使用例
watch -d df -h

ディスクの使用量をリアルタイムに監視。dfを2秒ごとに実行し、変わった部分をハイライトします。