如何使用 journalctl 檢視和分析 systemd 日誌(附實例)
簡介
很多人說 systemd 不好,它對系統的影響很大,這也是一個有爭議的話題。但你不能否認的是,它提供了一套完善的工具來管理和排除系統故障。想像一下,當你遇到一個沒有 GUI 的損壞系統時,你可能會把啟動和 GRUB 弄得一團糟。在這種情況下,你可以從一個立付Live系統啟動,掛上你的 Linux 分區,然後瀏覽 systemd 的日誌,找出問題所在。
systemd 有三個基本元件,如下所示:
-
systemd
:Linux 作業系統的系統和服務管理員。 -
systemctl
:此指令用於反觀和控制 systemd 系統和服務管理員的狀態。 -
systemd-analyze
:此指令提供系統啟動時的效能統計,並從系統和服務管理員中檢索其他狀態和追蹤資訊。
除了這三個服務外,systemd 還提供其他服務,如 journald、logind、networkd 等。在本指南中,我們將討論 systemd 的 journald 服務。
journald - systemd 日誌服務
根據設計,systemd 提供了一個集中的方式來處理所有來自進程、應用程式等的作業系統日誌。所有這些日誌事件都由 systemd 的 journald 守護程式來處理。 journald 守護程式會收集所有來自 Linux 作業系統各處的日誌,並將其作為二進位資料儲存在檔案中。
以二進位資料集中記錄事件、系統問題的好處很多。例如,由於系統日誌是以二進位而不是文字形式儲存的,你可以以文字、JSON 物件等多種方式進行轉譯,以滿足各種需求。另外,由於日誌是依序儲存的,透過日誌的日期/時間操作,超級容易追蹤到單一事件。
請記住,journald 收集的日誌檔案數以千計,而且不斷更新每次開機、每個事件。因此,如果你有一個長期運行的 Linux 作業系統,日誌的大小應該以 GB 為單位。由於有著數以千計的日誌,最好用基本指令進行過濾,以了解更多系統問題。
journald 設定檔
journald 的設定檔存在於下列路徑中。它包含了關於如何進行日誌記錄的各種標誌。你可以看一下這個文件,並進行必要的修改。但我建議不要修改這個文件,除非你知道自己在做什麼。
/etc/systemd/journald.conf
journald 儲存二進位日誌檔案的地方
journald 以二進位格式儲存日誌。它們被保存在這個路徑下的一個目錄中:
/var/log/journal
例如,在下面的路徑中,有一個目錄包含了迄今為止的所有系統日誌。
journalctl log file path
不要使用 cat
指令,也不要使用 nano
或 #1
來開啟這些檔案。它們(是二進制的),無法正常顯示。
使用journalctl 來檢視和分析systemd 日誌
journald 基本指令
查看journald 日誌的基本指令是:
journalctl
#journalctl
#该命令提供了所有应用程序和进程的日志条目,包括错误、警告等。它显示的列表中,最旧的日志在顶部,当前的日志在底部。你需要不断按回车键来逐行滚动浏览。你也可以使用 PAGE UP
和 PAGE DOWN
键来滚动。按 q
键可以退出这个视图。
如何以不同时区的时间查看日志条目
默认情况下,journalctl
以当前系统时区显示日志的时间。然而,你可以很容易地在命令中提供时区,将同一日志转换为不同的时区。例如,要以 UTC 查看日志,请使用以下命令:
journalctl --utc
journalctl --utc
如何在日志中只查看错误、警告等信息
系统产生的日志有不同的优先级。有些日志可能是可以忽略的警告,有些可能是重要的错误。你可能想只看错误,不看警告。这也可以用下面的命令来实现。
要查看紧急系统信息,请使用:
journalctl -p 0
journalctl -p 0
错误代码:
0: 紧急情况 1: 警报 2: 危急 3: 错误 4: 警告 5: 通知 6: 信息 7:调试
当你指定错误代码时,它显示该等级及更高的所有信息。例如,如果你指定下面的命令,它会显示所有优先级为 2、1 和 0 的信息:
journalctl -p 2
如何查看特定启动的日志
当你运行 journalctl
命令时,它会显示当前启动的信息,即你正在运行的会话中的信息。但也可以查看过去的启动信息。
在每次重启时,日志都会持续更新。journald 会记录不同启动时的日志。要查看不同启动时的日志,请使用以下命令。
journalctl --list-boots
journalctl list-boots
- 第一个数字显示的是 journald 的唯一的启动跟踪号码,你可以在下一个命令中使用它来分析该特定的启动。
- 第二个数字是启动 ID,你也可以在命令中指定。
- 接下来的两个日期、时间组合是存储在相应文件中的日志的时间。如果你想找出某个特定日期、时间的日志或错误,这就非常方便了。
要查看一个特定的启动号码,你可以选择第一个启动跟踪号码或启动 ID,如下所示。
journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98
journalctl -b 45
你也可以使用 -x
选项,在显示屏上添加 systemd 错误信息的解释。在某些情况下,这是个救命稻草。
journalctl -xb -p 3
journalctl -xb
如何查看某一特定时间、日期的日志记录
journalctl
功能强大,可以在命令中提供类似英语的参数,用于时间和日期操作。
你可以使用 --since
选项与 yesterday
、today
、tomorrow
或 now
组合。
下面是一些不同命令的例子。你可以根据你的需要修改它们。它们是不言自明的。以下命令中的日期、时间格式为 "YYYY-MM-DD HH:MM:SS"
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"
journalctl --since 09:00 --until
你也可以将上述内容与错误级别开关结合起来。
如何查看内核特定的日志记录
Linux 内核信息也可以从日志中提取出来。要查看当前启动时的内核信息,请使用以下命令:
journalctl -k
如何查看某个服务、PID 的日志
你可以从 journald 日志中过滤出某个 systemd 服务单元的特定日志。例如,如果要查看 NetworkManager 服务的日志,请使用下面的命令。
journalctl -u NetworkManager.service
journalctl NetworkManager service
如果你不知道服务名称,可以使用下面的命令来列出系统中的 systemd 服务。
systemctl list-units --type=service
如何查看用户、组的日志
如果你正在分析服务器日志,在多个用户登录的情况下,这个命令很有帮助。你可以先用下面的命令从用户名中找出用户的 ID。例如,要找出用户 debugpoint
的 ID:
id -u debugpoint
然后使用 _UID
选项指定该 ID 与来查看该用户产生的日志。
journalctl _UID=1000 --since today
journalctl _UID
同样地,使用 _GID
选项也可以查到用户组的情况。
如何查看一个可执行文件的日志
你也可以查看某个特定程序或可执行文件的日志。例如,如果你想找出 gnome-shell
的信息,你可以运行以下命令。
journalctl /usr/bin/gnome-shell --since today
journalctl gnome-shell
結束語
希望本指南能幫助你使用 #journalctl
查看分析 Linux 桌面或伺服器上的 systemd 日誌,排除故障。如果你知道如何使用這些命令,systemd 日誌管理的功能非常強大,它能讓你在調試時的生活變得輕鬆一些。現在所有主流的 Linux 發行版都使用 systemd。 Ubuntu、Debian、Fedora、Arch 它們都使用 systemd 作為其預設的作業系統元件。如果你想了解不使用 systemd 的 Linux發行版,你可能想看看 MX-Linux、Gentoo、Slackware、Void Linux。
以上是如何使用 journalctl 檢視和分析 systemd 日誌(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)
