試圖爲此運行一個bash腳本,因爲我想把它放到cron中,每天晚上運行以從文件中提取錯誤並寫入在同一目錄下的文件:從一個文件grep錯誤,並把它們放在一個新的文件,但不覆蓋新文件
我的腳本,它只是掛起翻出什麼:
#!/bin/bash
tail -f /var/log/syslog | grep -i "error" > /var/log/syserrorlog.log
在運行此,我想這個寫入/更新相同的文件,而不是將其覆蓋。
試圖爲此運行一個bash腳本,因爲我想把它放到cron中,每天晚上運行以從文件中提取錯誤並寫入在同一目錄下的文件:從一個文件grep錯誤,並把它們放在一個新的文件,但不覆蓋新文件
我的腳本,它只是掛起翻出什麼:
#!/bin/bash
tail -f /var/log/syslog | grep -i "error" > /var/log/syserrorlog.log
在運行此,我想這個寫入/更新相同的文件,而不是將其覆蓋。
將您的>
更改爲>>
(後者表示追加)。此外,tail -f
將按定義掛起:它將監視文件以獲取新數據。
如果你的系統記錄每天都在旋轉,那麼你可以簡單地使用
#!/bin/bash
cat /var/log/syslog | grep -i "error" >> /var/log/syserrorlog.log
如果不旋轉,你可以添加一個grep
,以過濾掉有關日期
嘗試使用管道logrotate
。這是用於定期輪換日誌的守護進程(例如,存檔日誌文件,然後每天晚上清除它們)。它支持許多配置選項,其中之一是postrotate
- 旋轉完成後執行的自定義腳本。說明從logrotate
的手冊頁複製:
postrotate/endscript
postrotate和endscript(兩者必須由他們自己上出現線條)之間的界限被執行(使用/ bin/sh的)在 日誌文件旋轉後。這些指令可能只出現在日誌文件定義 中。通常,日誌文件的絕對路徑作爲腳本的第一個參數傳遞給 。如果指定了共享腳本,則將整個 模式傳遞給該腳本。另見prerotate。請參閱共享腳本 和nosharedscripts以進行錯誤處理。
系統日誌也是一個標準的守護進程,所以它應該有配置文件在/etc/logrotate.d/
。你可以在那裏添加你的命令。
謝謝..明天早上我會試試這個,讓你知道結果 – Kerry
完美...感謝您的幫助 – Kerry