Bash
在文件名中連續拖尾帶有日期和時間的旋轉日誌文件
我有一個格式的日誌文件
log_name_YY-MM-DD_HH_mm.log
。日誌每隔幾個小時輪換一次,並創建包含創建日期和時間的新日誌。有時我需要使用tail -f
命令跟踪此日誌的實時輸出。日誌旋轉後,tail 仍指向舊文件名,必須使用新文件名手動重新啟動。有沒有辦法自動切換
tail -f
到使用新文件?在這種情況下,tail -F
選項 (tail --follow=name --retry
) 不起作用,因為日誌的文件名發生了變化。
您可以創建一個腳本在後台跟踪最新的日誌文件,然後定期檢查新的日誌文件。如果有新的日誌文件,則終止舊程序並開始跟踪新文件。
就像是:
#!/bin/bash PATTERN='log_name_??-??-??_??_??.log' CURRENT=any_pattern # dummy pattern to start off first tail -f while true; do NEWLOG=`ls -t $PATTERN|head -n1` if [[ $NEWLOG != $CURRENT ]] then kill $TAILPID 2>/dev/null CURRENT=$NEWLOG tail -f $CURRENT & TAILPID=$! fi sleep 1 # check regularly done