Linux中國

如何使用 journalctl 查看和分析 systemd 日誌(附實例)

本指南介紹了 systemd 的 journalctl 工具及其各種命令的基礎知識。你可以使用這些命令對 Linux 中的桌面和伺服器日誌進行故障診斷。以下是如何使用 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 命令,也不要使用 nanovi 來打開這些文件。它們(是二進位的),無法正常顯示。

使用 journalctl 來查看和分析 systemd 日誌

journald 基本命令

查看 journald 日誌的基本命令是:

journalctl

journalctl

該命令提供了所有應用程序和進程的日誌條目,包括錯誤、警告等。它顯示的列表中,最舊的日誌在頂部,當前的日誌在底部。你需要不斷按回車鍵來逐行滾動瀏覽。你也可以使用 PAGE UPPAGE 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 選項與 yesterdaytodaytomorrownow 組合。

下面是一些不同命令的例子。你可以根據你的需要修改它們。它們是不言自明的。以下命令中的日期、時間格式為 "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。

via: https://www.debugpoint.com/systemd-journalctl/

作者:Arindam 選題:lkxed 譯者:Chao-zhi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
1
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    5 Comments

    1. 350fairfax nordvpn special coupon code 2025
      Attractive section of content. I just stumbled upon your web site and in accession capital to assert that I
      acquire actually enjoyed account your blog posts. Any way I will be subscribing to
      your augment and even I achievement you access consistently fast.

    2. Thank you for every other excellent post. The place else may
      anybody get that kind of information in such an ideal means of writing?

      I have a presentation subsequent week, and I am at the search for such info.

      Here is my site :: nordvpn coupons inspiresensation

    3. Very nice blog post. I absolutely appreciate this website.
      Stick with it!

      Also visit my webpage nordvpn coupons inspiresensation (tinyurl.com)

    4. It’s really very complex in this busy life to listen news on TV, thus I
      just use the web for that purpose, and get the latest information.

      Here is my web site nordvpn coupons inspiresensation

    5. Have you ever thought about including a little bit more than just your articles?
      I mean, what you say is valuable and all.
      But think about if you added some great pictures or video clips to give your posts more, “pop”!
      Your content is excellent but with pics and videos, this website
      could undeniably be one of the most beneficial in its field.
      Great blog!

      Feel free to surf to my web-site :: nordvpn coupons inspiresensation (url.hys.cz)

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國