tail 是運維、開發每天必用的「看尾巴」神器。本文系統整理 tail 的標準語法、核心參數 (-f、-n、-c、-r)、進階組合 (tailf、multitail、less +F),並給出日誌分析、多檔監控、腳本整合的實戰範例。

tail [選項]... [檔案]...
# 無檔案參數時讀取標準輸入
| 參數 | 長參數 | 說明 | 範例 |
|---|---|---|---|
-n N | --lines=N | 顯示最後 N 行 (預設 10) | tail -n 20 /var/log/syslog |
-c N | --bytes=N | 顯示最後 N 位元組 | tail -c 1000 file.log |
-f | --follow | 即時追蹤檔案增長 (Ctrl+C 退出) | tail -f /var/log/nginx/access.log |
-F | --follow=name --retry | 按檔名追蹤,支援 logrotate 切割後重新打開 | tail -F /var/log/app.log |
-q | --quiet | 多檔案時不顯示檔名標頭 | tail -q -n 5 *.log |
-v | --verbose | 多檔案時顯示檔名標頭 | tail -v -n 5 *.log |
-r | 逆序顯示 (從尾部往前),需配合 -n | tail -r -n 20 file | |
-s N | --sleep-interval=N | -f 時輪詢間隔秒數 (預設 1s) | tail -f -s 5 /var/log/messages |
--pid=PID | 指定進程結束後自動退出追蹤 | tail -f --pid=1234 /var/log/app.log |
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
# 輸出會交錯顯示,前綴檔名
sudo apt install multitail
multitail /var/log/nginx/access.log /var/log/nginx/error.log
less +F /var/log/syslog
# 按 Ctrl+C 進入 less 普通模式 (可向上捲動、/搜尋)
# 再按 Shift+F 回到追蹤模式
tail -f /var/log/app.log | grep --line-buffered ERROR
# --line-buffered 確保即時輸出不緩衝
# 啟動服務並捕獲 PID
./start_server.sh &
SERVER_PID=$!
# 追蹤日誌,服務掛掉自動退出 tail
tail -f --pid=$SERVER_PID /var/log/server.log
tail -n 50 -f /var/log/messages
| 工具 | 優點 | 缺點 | 推薦場景 |
|---|---|---|---|
| tail -f | 標準、無依賴、支援 --pid | 不支援捲動搜尋 | 腳本、簡單監控 |
| tail -F | 支援 logrotate 切割 | 同上 | 生產環境日誌輪轉 |
| tailf | 不更新 atime (較省 I/O) | 功能少、部分發行版無 | 極高頻日誌 |
| less +F | 可捲動、搜尋、跳轉 | 互動式、不適合腳本 | 人工排查、詳細分析 |
| multitail | 多檔分視窗、高亮、過濾 | 需安裝、資源較多 | 同時監控多組日誌 |
0:成功>0:錯誤 (檔案不存在、權限不足等)掌握 tail -F (生產首選)、less +F (人工分析)、multitail (多檔並行)、--pid (腳本安全),日誌追蹤效率將提升數倍。