簡易的なログの監視であれば,下記のようなシェルスクリプトを作って,tail -f コマンドにつないでバック グラウンド ジョブとして投入しておけばよい.
# action.sh
while read i
do
echo $i |grep -q hello
if [ $? = 0 ]
then
echo 'hit'
fi
done
# tail -n 0 -f /var/log/messages | ./action.sh &
シェルスクリプトからsyslog(/var/log/messages)にメッセージを出したい場合は,loggerコマンドを使えばよい.
単に,logger hello と実行すると
# logger hello Feb 25 13:27:09 hostname root: hello
となってしまうので,-tオプション(タグ オプション)を使って,アプリケーション名やスクリプト名などを出しておくとよいだろう.ついでに,通常はスクリプト内で使う場合,エラーメッセージはコンソールにも出しておきたいと思うので,-s(同じメッセージを標準エラー出力にも出すオプション)をつけて下記のように実行するとよい.
# logger -s -t app hello Feb 25 13:29:41 hostname app: hello
Linuxサーバーの監視