如何在 Linux 中實時監(jiān)控日志文件
本教程解釋了如何實時監(jiān)控 Linux 日志文件(桌面、服務(wù)器或應(yīng)用),以進行診斷和故障排除。
當(dāng)你在你的 Linux 桌面、服務(wù)器或任何應(yīng)用中遇到問題時,你會首先查看各自的日志文件。日志文件通常是來自應(yīng)用的文本和信息流,上面有一個時間戳。它可以幫助你縮小具體的實例,并幫助你找到任何問題的原因。它也可以幫助從網(wǎng)絡(luò)上獲得援助。
一般來說,所有的日志文件都位于 /var/log
中。這個目錄包含以 .log
為擴展名的特定應(yīng)用、服務(wù)的日志文件,它還包含單獨的其他目錄,這些目錄包含其日志文件。
log files in var-log
所以說,如果你想監(jiān)控一堆日志文件或特定的日志文件。這里有一些你可以做到方法。
實時監(jiān)控 Linux 日志文件
使用 tail 命令
使用 tail
命令是實時跟蹤日志文件的最基本方法。特別是,如果你所在的服務(wù)器只有一個終端,沒有 GUI。這是很有幫助的。
比如:
tail /path/to/log/file
Monitoring multiple log files via tail
使用開關(guān) -f
來跟蹤日志文件,它是實時更新的。例如,如果你想跟蹤 syslog
,你可以使用以下命令:
tail -f /var/log/syslog
你可以用一個命令監(jiān)控多個日志文件,使用:
tail -f /var/log/syslog /var/log/dmesg
如果你想監(jiān)控 http 或 sftp 或任何服務(wù)器,你也可以在這個命令中監(jiān)控它們各自的日志文件。
記住,上述命令需要管理員權(quán)限。
使用 lnav(日志文件瀏覽器)
lnav Running
lnav
是一個很好的工具,你可以用它來通過彩色編碼的信息以更有條理的方式監(jiān)控日志文件。在 Linux 系統(tǒng)中,它不是默認安裝的。你可以用下面的命令來安裝它:
sudo apt install lnav ### Ubuntu
sudo dnf install lnav ### Fedora
好的是,如果你不想安裝它,你可以直接下載其預(yù)編譯的可執(zhí)行文件,然后在任何地方運行。甚至從 U 盤上也可以。它不需要設(shè)置,而且有很多功能。使用 lnav
,你可以通過 SQL 查詢?nèi)罩疚募约捌渌芸岬墓δ?,你可以在它?nbsp;官方網(wǎng)站 上了解。
一旦安裝,你可以簡單地用管理員權(quán)限從終端運行 lnav
,它將默認顯示 /var/log
中的所有日志并開始實時監(jiān)控。
關(guān)于 systemd 的 journalctl 說明
今天所有的現(xiàn)代 Linux 發(fā)行版大多使用 systemd。systemd 提供了運行 Linux 操作系統(tǒng)的基本框架和組件。systemd 通過 journalctl
提供日志服務(wù),幫助管理所有 systemd 服務(wù)的日志。你還可以通過以下命令實時監(jiān)控各個 systemd 服務(wù)和日志。
journalctl -f
下面是一些具體的 journalctl
命令,可以在一些情況下使用。你可以將這些命令與上面的 -f
開關(guān)結(jié)合起來,開始實時監(jiān)控。
- 對緊急系統(tǒng)信息,使用:
journalctl -p 0
- 顯示帶有解釋的錯誤:
journalctl -xb -p 3
- 使用時間控制來過濾輸出:
journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"
如果你想了解更多關(guān)于 journalctl
的細節(jié),我已經(jīng)寫了一個 指南。
結(jié)束語
我希望這些命令和技巧能幫助你找出桌面或服務(wù)器問題/錯誤的根本原因。對于更多的細節(jié),你可以隨時參考手冊,擺弄各種開關(guān)。