我正在監視一個日誌文件(這是一個PBX隊列文件,它是在呼叫進入時寫入的,它是呼叫發生的結果,呼叫者是否掛斷等)在BASH中用inotifywait觸發事件
這是我有:
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
現在,如果我運行該腳本,它成功地建立了手錶和檢測的改變/關閉(我都試過修改並CLOSE_WRITE,都工作)
Setting up watches.
Watches established.
/var/log/asterisk/queue_log_test CLOSE_WRITE,CLOSE
但事件從未被觸發(我測試了inotify腳本之外的PHP腳本,它們執行得非常好)
如果我正在監視正在運行的文件的尾部,它會成功並找到短語:
[[email protected] ...local/scripts/queue_monitor]: tail /var/log/asterisk/queue_log_test
ABANDON
[Load: 0.00] [Time: 19:04:43]
[[email protected] ...local/scripts/queue_monitor]:
這是什麼我在這裏失蹤?
您正在運行inotifywait並查看'queue_log_test',但正在測試'queue_log'中的更改。這兩個文件有什麼不同嗎? –
嗨喬: 對不起,這是一個錯字,這兩個文件都存在。我創建了測試文件,因爲實際的queue_log文件是由PBX軟件寫入的,我不想幹涉它。要麼工作 – TD46