Bash腳本監視日誌,匹配關鍵字然後發送命令

Bash腳本監視日誌,匹配關鍵字然後發送命令
#!/bin/bash
sudo tail -fn0 /home/main/time.log |
grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
    while read line; do 
sudo pkill -f porch.sh &
sudo pkill -f garage.sh &
done

我正在嘗試編寫一個監視日誌的腳本,並且在匹配關鍵字時,它將觸發一些命令。

問題是,我拼湊起來的東西只能工作一次,然後退出並停止監視。

我在 grep 中添加了“head -1”,因為我希望它僅在第一個關鍵字之後執行,並防止它在日誌尾部出現多個關鍵字時多次執行。所以,基本上,如果尾部出現多個關鍵字,我希望它在第一個關鍵字執行,忽略其餘關鍵字,執行列出的腳本,然後返回監視日誌的尾部。

我希望腳本在匹配關鍵字後保持活動狀態,並繼續監視日誌尾部以查找可能記錄的任何新關鍵字。

非常感謝任何建議。謝謝你!

答案1

如果您希望它繼續監視,我建議您使用無限循環,並且只需在 shell 中添加並休眠,以告訴他們需要經過多少時間才能再次監視,如果您使用的是 bash shell,則如下所示:

#!/bin/bash
while true
do
   sudo tail -fn0 /home/main/time.log |
   grep -o --line-buffered 'garage\|garden\|porch' | head -1 |
   while read line; do 
      sudo pkill -f porch.sh &
      sudo pkill -f garage.sh &
   done
   sleep 1 #change it for the time you want it to keep it monitoring again
done

相關內容