さっくり作ってみた。
「ログファイルにあるキーワードが入ってきたら、ダイアログを表示して通知する。」
って、expectコマンドを使っただけなんですけど。
(これ使わなくても、swatchっていう、それようなコマンドもある。)

ログファイルの監視面倒くさい (´ヘ`;)
できあがったのはこれ。
ダウンロード
今の実装はキーワードを見つけた時に、
Applescriptでダイアログを出すようにしているので、Mac OSX環境用です。
watch_log_file.shの35行目の、systemから始まる行を変更すれば、
他の環境でも実行できるし、他の処理でも実行できると思う。

キーワードを発見時に表示するダイアログ。Mac OSX 依存。
使い方は
./watch_log_file.sh 監視ファイル 監視キーワード
実行例は
./watch_log_file.sh /var/log/system.log ERRORCODE:128
です。
で、監視しているログファイルに、
指定した「キーワード」が新しく入ってきたら、
上の画像にあるダイアログが表示される仕組みになっています。
本日は以上です。
ではー。
以下はスクリプトの中身 (記事用に、実際のファイルとは少し変えてある)。
・watch_log_file.shというログファイル監視スクリプトと、
・display_dialog.shというダイアログを表示する環境依存なスクリプト
の2つのファイルからできています。
監視しているログファイルの最後の行に、
監視対象のキーワードが入っていたら、しょっぱなからダイアログが出ちゃうけど、
それは仕様です(←えー)。
# watch_log_file.sh
1 #!/bin/sh
2
3 # change current directory
4 cd $(dirname $0)
5
6 # argument count check
7 if [ $# -lt 2 ]; then
8 cat << EOF
9 argument error.
10 usage:
11 watch_log_file.sh target_file search_keyword
12 EOF
13 exit 1
14 fi
15
16 TARGET_FILE=$1
17 shift
18 KEYWORD="$*"
19
20 # file check
21 if [ ! -f ${TARGET_FILE} ]; then
22 cat << EOF
23 target file is not found.
24 usage:
25 watch_log_file.sh target_file search_keyword
26 EOF
27 exit 1
28 fi
29
30 # run expect command
31 expect -- << EOF
32 set timeout -1
33 spawn tail -1 -f ${TARGET_FILE}
34 expect "${KEYWORD}"
35 system ./display_dialog.sh find keyword: ${KEYWORD} in ${TARGET_FILE}
36 EOF
# display_dialog.sh
1 #!/bin/sh
2
3 # function for display dialog
4 osa_display_dialog() {
5 if [ $# -lt 1 ]; then
6 cat << EOF
7 argument error.
8 usage:
9 osa_display_dialog display_message
10 EOF
11 exit 1
12 fi
13
14 osascript << EOF > /dev/null
15 tell application "Finder"
16 activate
17 display dialog "$*" as text
18 end tell
19 EOF
20 }
21
22 # argument count check
23 if [ $# -lt 1 ]; then
24 cat << EOF
25 argument error.
26 usage:
27 display_dialog.sh display_message
28 EOF
29 exit 1
30 fi
31
32 # run function osa_display_dialog
33 osa_display_dialog "$*"