昔、『「ping -a」で音が鳴る!』なエントリでも書いたのですが、何らかをリアルタイムにチェック/監視したい時に、視覚だけではなくアラート音が一緒に出ると、モニタリングしやすいものです。
というわけで、Linuxなんかで、とあるログファイルの出力から、ある文字列が検出された際に、ビープ音を鳴らすワンライナーは以下。
$ tail -f ログファイル | sed -e 's/\(対象文字列\)/\1^G/'
上記を実行中に、指定ログファイルに対象文字列が出力されるとビープ(Beep)音が鳴るはず。
「^G」(0x07)の部分が、ASCIIのBELキャラクタのリテラルです。
$ echo -n "^G"
などとしてやれば、ベル(ビープ音)が鳴りますよね。
ちなみに、「^G」は、[Ctrl-V] ⇒ [Ctrl-G] の順に入力してやればOK。emacsだと[Ctrl-Q] ⇒ [Ctrl-G]かな。
人手によるログ監視w や、開発時のテストなんかのお供にいかがでしょうか。
ちょっと応用
せっかくなので、音だけではなく出力される文字表示にアレンジを加える場合は、エスケープシーケンスを活用します。
例えば、下記の例は、ログ内に"error"という文字列が出力された場合に、ビープ音と画面(標準出力)に表示される"error"の文字列を反転させて表示させるというもの。
# tail -f /var/log/messages | sed -e 's/\(error\)/^[[7m\1^[[m^G/'
「^[」はESCを示します。「ESC[7m」はリバース、すなわち反転を示すエスケープコードです。「ESC[m」は「ESC[0m」と同じ意味合いで属性を無指定にする(指定属性をクリアする)意味となります。
ちなみに、「^[」は[Ctrl-V] ⇒ [ESC]で入力します。
・・・で、結果は以下のような感じです。少し目立つようになりました。(# めんどくさかったので、rootで作業しちゃったYO!w)
エスケープコードは、複数組み合わせることができ、この場合、「;」(セミコロン)で区切ってやります。
例えば、以下は「ESC[4m」(下線)と「ESC[31m」(赤に色付け)を組み合わせた例です。
# tail -f /var/log/messages | sed -e 's/\(error\)/^[[4;31m\1^[[m^G/'
結果は以下のような感じ。これも目立ちますね。
その他のエスケープシーケンス(VT-100エミュレーション)については、以下のリンク先が詳しいです。もっとアレコレしたい方はご参考までに。
参考:US ASCII CODE LIST
+---------+---------+---------+---------+ |CHAR HEX |CHAR HEX |CHAR HEX |CHAR HEX | +---------+---------+---------+---------+ |NUL 0x00|SP 0x20|@ 0x40|` 0x60| |SOH 0x01|! 0x21|A 0x41|a 0x61| |STX 0x02|" 0x22|B 0x42|b 0x62| |ETX 0x03|# 0x23|C 0x43|c 0x63| |EOT 0x04|$ 0x24|D 0x44|d 0x64| |ENQ 0x05|% 0x25|E 0x45|e 0x65| |ACK 0x06|& 0x26|F 0x46|f 0x66| |BEL 0x07|' 0x27|G 0x47|g 0x67| |BS 0x08|( 0x28|H 0x48|h 0x68| |HT 0x09|) 0x29|I 0x49|i 0x69| |LF 0x0a|* 0x2a|J 0x4a|j 0x6a| |VT 0x0b|+ 0x2b|K 0x4b|k 0x6b| |NP 0x0c|, 0x2c|L 0x4c|l 0x6c| |CR 0x0d|- 0x2d|M 0x4d|m 0x6d| |SO 0x0e|. 0x2e|N 0x4e|n 0x6e| |SI 0x0f|/ 0x2f|O 0x4f|o 0x6f| |DLE 0x10|0 0x30|P 0x50|p 0x70| |DC1 0x11|1 0x31|Q 0x51|q 0x71| |DC2 0x12|2 0x32|R 0x52|r 0x72| |DC3 0x13|3 0x33|S 0x53|s 0x73| |DC4 0x14|4 0x34|T 0x54|t 0x74| |NAK 0x15|5 0x35|U 0x55|u 0x75| |SYN 0x16|6 0x36|V 0x56|v 0x76| |ETB 0x17|7 0x37|W 0x57|w 0x77| |CAN 0x18|8 0x38|X 0x58|x 0x78| |EM 0x19|9 0x39|Y 0x59|y 0x79| |SUB 0x1a|: 0x3a|Z 0x5a|z 0x7a| |ESC 0x1b|; 0x3b|[ 0x5b|{ 0x7b| |FS 0x1c|< 0x3c|\ 0x5c|| 0x7c| |GS 0x1d|= 0x3d|] 0x5d|} 0x7d| |RS 0x1e|> 0x3e|^ 0x5e|~ 0x7e| |US 0x1f|? 0x3f|_ 0x5f|DEL 0x7f| +---------+---------+---------+---------+ US ASCII CODE LIST
via. http://homepage1.nifty.com/pokke/pdocs/pd7.html
LinuxサーバHacks―プロが使うテクニック&ツール100選
- 作者: ロブフリッケンガー,Rob Flickenger,山口晴広,イメージズアンドワーズ
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/11/01
- メディア: 単行本
- 購入: 4人 クリック: 56回
- この商品を含むブログ (51件) を見る
Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング
- 作者: Bill von Hagen,Brian K. Jones,菅野良二
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/10/24
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 26回
- この商品を含むブログ (31件) を見る