
#!/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