tail 是日誌分析、即時監控的核心工具。本文系統整理參數、常用模式、進階技巧 (多檔追蹤、PID 結合、結合 grep/awk) 與實戰範例。
| 參數 | 說明 | 範例 |
|---|---|---|
-n N, -N | 顯示最後 N 行 (預設 10) | tail -n 20 /var/log/syslog |
-c N | 顯示最後 N 位元組 | tail -c 1k access.log |
-f, --follow | 即時追蹤檔案增長 (預設用 inotify) | tail -f /var/log/nginx/access.log |
-F | -f --retry,檔案被旋轉/重建也會繼續追蹤 | tail -F /var/log/app.log |
+N | 從第 N 行顯示到結尾 | tail -n +5 file.txt |
-q, --quiet | 多檔案時不顯示檔名標頭 | tail -q -n 5 *.log |
-v, --verbose | 強制顯示檔名標頭 | tail -v -n 5 file.log |
--pid=PID | 配合 -f,指定 PID 結束時停止追蹤 | tail -f --pid=$$ log.txt |
-s SEC, --sleep-interval | 追蹤輪詢間隔 (秒),預設 1.0 | tail -f -s 0.5 log.txt |
tail -f /var/log/nginx/access.log | grep --line-buffered -E ' 404| 50[0-9]'
tail -F /var/log/messages | awk '/error|fail|critical/ {print strftime("%F %T"), $0}'
tail -n 100 -f /var/log/mysql/slow.log
tail -n +50 large_log.txt | less
tail -f /var/log/nginx/*.log
# 啟動背景程式
my_daemon &
DAEMON_PID=$!
# 追蹤其日誌,程式結束自動停止 tail
tail -f --pid=$DAEMON_PID /var/log/my_daemon.log
tail -f log | ccze -A 或 grc tail -f log。tail -f app.json.log | jq -c。tail -f /var/log/* 2>/dev/null (錯誤導向)。tail -n 50 -f log 先看最近 50 行再追蹤。logrotate 移動/重建,改用 tail -F (大寫 F) 會自動重新開啟新 inode。sudo 或將使用者加入 adm 群組 (usermod -aG adm $USER)。tail 只讀取檔案末端區塊,不載入整檔,效能極佳。熟練 tail -f/-F、+N、--pid 等參數,讓日誌分析事半功倍。