Linux上でログの監視をするためにswatchを調査時にはまったのでメモ。
swatchのアクションで、該当のログを外部コマンドに渡して実行しようと思って、試しに下記のような指定をしてみました。
watchfor /ERROR/ exec "echo $0"
上記は単に、ERRORという文字列が出現したら、そのログ内容を出力するといったものですが、どうもパラメータとして渡されているのが、下記のような実行されているスクリプト名となってしまいます。
/home/hoge/.swatch_script.1234
swatchの使い方は、主に@ITの下記の記事を参考にしてみました。
他のサイト見ても、「execでコマンドの引数として「$0」を指定すると、表示されるログそのものを意味する」みたいな事しか書いてなくて、
うむぅと思って、swatchがperlで書かれているので、他の特殊パラメータを試してみたら、どうも下記のようにすると渡せる模様です。
watchfor /ERROR/ exec "echo $_"
ちなみにswatchのバージョンは3.1.1でした。
#もしかすると昔のバージョンは違ったのかもしれませんが…