国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識庫 >  云服務(wù)器 >  服務(wù)器教程 >  如何使用 journalctl 查看和分析 systemd 日志

如何使用 journalctl 查看和分析 systemd 日志

2023-05-24 10:39:21 6454

systemd 有三個(gè)基本組件,如下所示:

systemd:Linux 操作系統(tǒng)的系統(tǒng)和服務(wù)管理器。

systemctl :該命令用于反觀和控制 systemd 系統(tǒng)和服務(wù)管理器的狀態(tài)。

systemd-analyze:該命令提供系統(tǒng)啟動(dòng)時(shí)的性能統(tǒng)計(jì),并從系統(tǒng)和服務(wù)管理器中檢索其他狀態(tài)和跟蹤信息。

擴(kuò)展:

Systemctl

image.png 

systemd-analyze

 image.png


可以看到開機(jī)用了 30 秒以上。接下來查詢下這鍋應(yīng)該誰背:

image.png

可以看到 cloud-init-local.service 耗時(shí) 最長,花了 5 秒。這里的記時(shí)有可能是等待其他服務(wù)器啟動(dòng)的,再來看看其關(guān)聯(lián)服務(wù)的啟動(dòng)時(shí)間:

image.png 

除了這三個(gè)服務(wù)外,systemd 還提供其他服務(wù),如 journald、logind、networkd 等。在本指南中,我們將討論 systemd 的 journald 服務(wù)。

journald - systemd 日志服務(wù)

根據(jù)設(shè)計(jì),systemd 提供了一個(gè)集中的方式來處理所有來自進(jìn)程、應(yīng)用程序等的操作系統(tǒng)日志。所有這些日志事件都由 systemd 的 journald 守護(hù)進(jìn)程來處理。journald 守護(hù)進(jìn)程收集所有來自 Linux 操作系統(tǒng)各處的日志,并將其作為二進(jìn)制數(shù)據(jù)存儲在文件中。

以二進(jìn)制數(shù)據(jù)集中記錄事件、系統(tǒng)問題的好處有很多。例如,由于系統(tǒng)日志是以二進(jìn)制而不是文本形式存儲的,你可以以文本、JSON 對象等多種方式進(jìn)行轉(zhuǎn)譯,以滿足各種需求。另外,由于日志是按順序存儲的,通過對日志的日期/時(shí)間操作,超級容易追蹤到單個(gè)事件。

請記住,journald 收集的日志文件數(shù)以千行計(jì),而且不斷更新每次開機(jī)、每個(gè)事件。因此,如果你有一個(gè)長期運(yùn)行的 Linux 操作系統(tǒng),日志的大小應(yīng)該以 GB 為單位。由于有著數(shù)以千計(jì)的日志,最好用基本命令進(jìn)行過濾,以了解更多系統(tǒng)問題。

journald 配置文件

journald 的配置文件存在于以下路徑中。它包含了關(guān)于如何進(jìn)行日志記錄的各種標(biāo)志。你可以看一下這個(gè)文件,并進(jìn)行必要的修改。。

/etc/systemd/journald.conf

journald 存儲二進(jìn)制日志文件的地方

journald 以二進(jìn)制格式存儲日志。它們被保存在這個(gè)路徑下的一個(gè)目錄中:

/var/log/journal

例如,在下面的路徑中,有一個(gè)目錄包含了迄今為止的所有系統(tǒng)日志。

 image.png


不要使用 cat 命令,也不要使用 nano 或 vi 來打開這些文件。它們(是二進(jìn)制的),無法正常顯示。

image.png 

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

journald 基本命令

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

journalctl

image.png 

該命令提供了所有應(yīng)用程序和進(jìn)程的日志條目,包括錯(cuò)誤、警告等。它顯示的列表中,最舊的日志在頂部,當(dāng)前的日志在底部。你需要不斷按回車鍵來逐行滾動(dòng)瀏覽。你也可以使用 PAGE UP 和 PAGE DOWN 鍵來滾動(dòng)。按 q 鍵可以退出這個(gè)視圖。

如何以不同時(shí)區(qū)的時(shí)間查看日志條目

默認(rèn)情況下,journalctl 以當(dāng)前系統(tǒng)時(shí)區(qū)顯示日志的時(shí)間。然而,你可以很容易地在命令中提供時(shí)區(qū),將同一日志轉(zhuǎn)換為不同的時(shí)區(qū)。例如,要以 UTC (世界協(xié)調(diào)時(shí)間)查看日志,請使用以下命令:

journalctl --utc

image.png 

為確保您的機(jī)器現(xiàn)在使用的是正確的時(shí)間,請timedatectl單獨(dú)使用命令或與status選項(xiàng)一起使用。顯示將相同:

timedatectl status

image.png

如何在日志中只查看錯(cuò)誤、警告等信息

系統(tǒng)產(chǎn)生的日志有不同的優(yōu)先級。有些日志可能是可以忽略的警告,有些可能是重要的錯(cuò)誤。你可能想只看錯(cuò)誤,不看警告。這也可以用下面的命令來實(shí)現(xiàn)。

要查看緊急系統(tǒng)信息,請使用:

journalctl -p 0這里linux沒有這一級別的警告,所以未出現(xiàn)任何信息

image.png

錯(cuò)誤代碼:

0: 緊急情況

1: 警報(bào)

2: 危急

3: 錯(cuò)誤

4: 警告

5: 通知

6: 信息

7:調(diào)試

當(dāng)你指定錯(cuò)誤代碼時(shí),它顯示該等級及更高的所有信息。例如,如果你指定下面的命令,它會顯示所有優(yōu)先級為 2、1 和 0 的信息:

journalctl -p 2

image.png 

如何查看特定啟動(dòng)的日志

當(dāng)你運(yùn)行 journalctl 命令時(shí),它會顯示當(dāng)前啟動(dòng)的信息,即你正在運(yùn)行的會話中的信息。但也可以查看過去的啟動(dòng)信息。

在每次重啟時(shí),日志都會持續(xù)更新。journald 會記錄不同啟動(dòng)時(shí)的日志。要查看不同啟動(dòng)時(shí)的日志,請使用以下命令。

journalctl --list-boots

image.png 

第一個(gè)數(shù)字顯示的是 journald 的唯一的啟動(dòng)跟蹤號碼,你可以在下一個(gè)命令中使用它來分析該特定的啟動(dòng)。

第二個(gè)數(shù)字是啟動(dòng) ID,你也可以在命令中指定。

接下來的兩個(gè)日期、時(shí)間組合是存儲在相應(yīng)文件中的日志的時(shí)間。如果你想找出某個(gè)特定日期、時(shí)間的日志或錯(cuò)誤,這就非常方便了。

要查看一個(gè)特定的啟動(dòng)號碼,你可以選擇第一個(gè)啟動(dòng)跟蹤號碼或啟動(dòng) ID,如下所示。

journalctl -b -2

journalctl -b 573da31b0c2542d8ab13a9795f530c69

image.png 

你也可以使用 -x 選項(xiàng),在顯示屏上添加 systemd 錯(cuò)誤信息的解釋。在某些情況下,這是個(gè)救命稻草。

journalctl  -p 3 -xb -2

image.png 

如何查看某一特定時(shí)間、日期的日志記錄

journalctl 功能強(qiáng)大,可以在命令中提供類似英語的參數(shù),用于時(shí)間和日期操作。

你可以使用 --since 選項(xiàng)與 yesterday、today、tomorrow 或 now 組合。

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

image.png 

你也可以將上述內(nèi)容與錯(cuò)誤級別開關(guān)結(jié)合起來。

如何查看內(nèi)核特定的日志記錄

Linux 內(nèi)核信息也可以從日志中提取出來。要查看當(dāng)前啟動(dòng)時(shí)的內(nèi)核信息,請使用以下命令:

journalctl -k

如何查看某個(gè)服務(wù)、PID 的日志

你可以從 journald 日志中過濾出某個(gè) systemd 服務(wù)單元的特定日志。例如,如果要查看 NetworkManager 服務(wù)的日志,請使用下面的命令。

journalctl -u NetworkManager.service

image.png 

如果你不知道服務(wù)名稱,可以使用下面的命令來列出系統(tǒng)中的 systemd 服務(wù)。

systemctl list-units --type=service

image.png

如何查看用戶、組的日志

如果你正在分析服務(wù)器日志,在多個(gè)用戶登錄的情況下,這個(gè)命令很有幫助。你可以先用下面的命令從用戶名中找出用戶的 ID。例如,要找出用戶xurong ID:

id -u xurong

然后使用 _UID 選項(xiàng)指定該 ID 與來查看該用戶產(chǎn)生的日志。

journalctl _UID=1000 --since today(這里是新建做測試的用戶所以沒有日志)

image.png 

如何查看一個(gè)可執(zhí)行文件的日志

你也可以查看某個(gè)特定程序或可執(zhí)行文件的日志。例如,如果你想找出 gnome-shell 的信息,你可以運(yùn)行以下命令。

journalctl /xurong.sh --since today

image.png

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: