ログ ファイルを監視しています (これは PBX キュー ファイルで、通話が着信したときに書き込まれ、発信者が電話を切ったかどうかなど、通話に何が起こったかの結果です)
ここに私が持っているものがあります:
while inotifywait -m -e close_write /var/log/asterisk/queue_log_test;
do
if [ tail -n1 /var/log/asterisk/queue_log | grep EXITWITHTIMEOUT ];
then
php /usr/local/scripts/queue_monitor/pbx_queue_timeout.php
elif [ tail -n1 /var/log/asterisk/queue_log | grep ABANDON ];
then
php /usr/local/scripts/queue_monitor/pbx_queue_abandon.php
elif [ tail -n1 /var/log/asterisk/queue_log | grep COMPLETE ];
then
php /usr/local/scripts/queue_monitor/pbx_queue_complete.php
else
# Don't do anything unless we've found one of those
:
fi
done
ここで、スクリプトを実行すると、監視が正常に設定され、変更/終了が検出されます (MODIFY と CLOSE_WRITE の両方を試しましたが、どちらも機能します)。
Setting up watches.
Watches established.
/var/log/asterisk/queue_log_test CLOSE_WRITE,CLOSE
しかし、イベントは決してトリガーされません (私は inotify スクリプトの外で PHP スクリプトをテストしましたが、それらは見事に実行されます)
監視されているファイルを手動で実行すると、成功し、次のフレーズが見つかります。
[root@pbx ...local/scripts/queue_monitor]: tail /var/log/asterisk/queue_log_test
ABANDON
[Load: 0.00] [Time: 19:04:43]
[root@pbx ...local/scripts/queue_monitor]:
ここで何が欠けているのですか?