🐧 Linux tail 與文字流處理全攻略:即時監控、篩選、分析日誌的實戰技巧
在日常伺服器維運中,tail 是最常被用來觀察系統日誌與即時輸出的命令。透過結合 grep、awk、sed 等文字處理工具,我們可以將原本雜亂的 log 資料,轉化為可即時追蹤與分析的資訊流。
📘 一、tail 的基本用法
tail 用來顯示檔案的最後幾行內容,預設為 10 行:
tail /var/log/messages
tail -n 20 /var/log/syslog
若要即時監控變化,使用 -f 參數:
sudo tail -f /var/log/nginx/access.log
這會持續輸出新增內容,非常適合觀察伺服器存取狀況或錯誤訊息。
🧩 二、結合 grep 篩選關鍵字
在實務上常需從大量輸出中篩選資訊,可搭配 grep 進行:
sudo tail -f /var/log/syslog | grep "error"
sudo tail -f /var/log/secure | grep -E "Failed|Invalid"
利用 grep -E 可支援正則表達式,方便同時比對多個關鍵字。
🧠 三、結合 awk / sed 做格式化輸出
awk 可解析欄位,例如僅顯示 IP 或時間:
sudo tail -f /var/log/nginx/access.log | awk '{print $1, $4, $9}'
sed 則可用於動態替換或清理字串:
sudo tail -f /var/log/app.log | sed 's/DEBUG/🟢 DEBUG/g'
這些組合讓你能即時將日誌轉為可讀性高的格式,甚至可輸出到監控面板。
⚙️ 四、實用範例集
- 監看 SSH 登入失敗:
sudo tail -f /var/log/auth.log | grep "Failed password" - 顯示 HTTP 錯誤代碼:
sudo tail -f access.log | grep " 500 " - 即時分析存取量:
sudo tail -f access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head
🔍 五、進階應用:結合多檔案與時間標記
tail 可以一次監看多個檔案:
sudo tail -f /var/log/nginx/*.log
若配合 ts(moreutils 套件)可在每行前加上時間戳記:
sudo tail -f /var/log/messages | ts "%Y-%m-%d %H:%M:%S"
🧭 行動清單
✅ 熟悉 tail -f 與 -n 的差異與用途 ✅ 使用 grep / awk / sed 強化日誌篩選與格式化 ✅ 建立自動化監控腳本或整合 systemd service ✅ 將篩選後結果導出至 log server 或分析工具
📘 結語
掌握 tail 與文字處理工具的組合,能顯著提升系統監控效率。從單純檢視 log,到實現即時告警與報表,這些命令構成了 Linux 維運的「觀察核心」。
🔗 延伸閱讀
- 🐧 Linux sed 使用基礎說明:文字取代、刪除與常用範例
- 🐧 Linux systemd 深入解析與啟動流程管理
- 🐧🧱 Linux Proxy Server 建置教學(Squid 安裝與設定指南)
— WWFandy・系統與網路筆記
沒有留言: