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