Systemd是大多數(shù)主要Linux發(fā)行版的默認(rèn)的初始化程序。Systemd的主要功能之一收集日志以及為分析日志提供工具。
在傳統(tǒng)的SysV 初始化系統(tǒng)中,將日志存儲(chǔ)在純文本文件。讀取和分析這些文件需要使用find、grep、cut和許多其他命令組合。
Systemd比Syslogs從更多的來源收集日志,以二進(jìn)制格式保存日志,并為您提供命令行工具來讀取、分析和操作日志。這比系統(tǒng)日志更精簡(jiǎn)。
journald是Systemd的守護(hù)進(jìn)程,它從各種日志源收集日志,如syslog。journalctl是一個(gè)命令行工具,可讓您與日志進(jìn)行交互。
使用journalctl
命令可以讀取日志,實(shí)時(shí)監(jiān)控日志,根據(jù)時(shí)間、服務(wù)、嚴(yán)重性等參數(shù)過濾日志。
在本教程中,我將向您展示如何使用journalctl來讀取、監(jiān)控和分析Linux中的日志。
啟用journald服務(wù)
一些Linux發(fā)行版,特別是桌面發(fā)行版,默認(rèn)情況下不啟用日志。日志的默認(rèn)目錄是/var/log/journal
。
接下來,在etc/systemd/journald.conf
文件中確保將值Storage
設(shè)置為auto
或persistent
。
journald.conf文件包含默認(rèn)值。因此,配置行前面有#
符號(hào),也意味著這些配置選項(xiàng)使用默認(rèn)設(shè)置。如果要更改任何內(nèi)容,請(qǐng)從該行中刪除#。
閱讀日志
我們向您展示一些journalctl
命令最基本但最有用的示例。如果您只是在終端中輸入journalctl
命令,它將按時(shí)間順序顯示日志日志。
journalctl
命令在將會(huì)調(diào)用less命令來向您顯示日志。這意味著您可以與使用less命令相同的按鍵來移動(dòng)日志。
如果您不希望日志以less命令的模式顯示,則可以使用journalctl
命令的--no-pager
選項(xiàng),這將直接在屏幕上顯示整個(gè)日志。
journalctl
journalctl --no-pager
按時(shí)間倒序顯示日志
默認(rèn)情況下,journalctl
命令按時(shí)間順序顯示日志。這意味著最早的存儲(chǔ)日志首先顯示。
如果您想首先查看最近的日志,可以使用journalctl
命令的-r
選項(xiàng)以相反的順序顯示日志。
journalctl
命令它仍然使用less
命令,顯示日志,因此你可按快捷鍵q
退出日志查看模式。
journalctl -r
查看最近 N行日志
您可以使用journalctl
命令的-n
選項(xiàng)選擇僅顯示指定行數(shù)最近的日志,而不是顯示所有日志。
例如命令journalctl -n 25
顯示最近的 25 行日志。
journalctl -n 25
實(shí)時(shí)查看日志
現(xiàn)在你已經(jīng)學(xué)會(huì)查看最近的日志,如果要實(shí)時(shí)查看日志,可以使用journalctl
命令的-f
選項(xiàng)。
與tail命令的-f
選項(xiàng)一樣,這將在追蹤模式下實(shí)時(shí)顯示日志。可以使用快捷鍵Ctrl+C
命令退出實(shí)時(shí)視圖。
journalctl -f
查看內(nèi)核日志
Systemd會(huì)累積來自不同來源的日志。如果您只想查看Linux內(nèi)核日志,可以使用journalctl
命令的-k
選項(xiàng)。
journalctl -k
查看所有日志
Systemd會(huì)根據(jù)當(dāng)前用戶權(quán)限是否顯示用戶可查看的日志。如果您是普通用戶,它可能會(huì)顯示一些日志,但不會(huì)顯示所有日志。
如果您想訪問所有日志,則應(yīng)使用sudo運(yùn)行journalctl
命令。例如命令sudo journalctl
。
sudo journalctl
查看服務(wù)日志
journalctl
命令的-u
選項(xiàng)。可讓您可以根據(jù)Systemd服務(wù)過濾日志。例如,你想查看 SSH服務(wù)生成的日志。請(qǐng)運(yùn)行命令journalctl -u ssh
。
journalctl -u ssh
查看指定時(shí)間間隔的日志
這是日志的過濾功能的另一個(gè)示例。您可以過濾指定時(shí)間段的日志,并且有多種方法可以做到這一點(diǎn)。
您可以使用自然語言來過濾日志。像yesterday、today和tormrow這樣的術(shù)語也會(huì)被識(shí)別。您還可以指定日期或日期時(shí)間組合。使用日期和時(shí)間指定時(shí)間段。
您甚至還可以使用-1h20min等相對(duì)時(shí)間來指定過去的1小時(shí)20分鐘。journalctl命令的--since
選項(xiàng)表示開始時(shí)間。--until
選項(xiàng)表示結(jié)束時(shí)間。
journalctl --since=yesterday --until=now
journalctl --since "2020-07-10"
journalctl --since "2020-07-10 15:10:00" --until "2020-07-12"
根據(jù)UID、GID和PID過濾日志
如果您正在調(diào)試程序問題,您可能希望使用進(jìn)程的PID查看日志。還可以根據(jù)用戶 ID (UID)、組ID (GID) 和進(jìn)程 ID (PID) 過濾日志日志。
journalctl _PID=1234
journalctl -xe
您經(jīng)常會(huì)發(fā)現(xiàn)有人建議使用journalctl -xe
命令。-e
跳轉(zhuǎn)到日志分頁的末尾。-x
選項(xiàng)添加日志的額外的消息解釋。
某些日志消息具有正常日志查看中未顯示的附加信息。使用-x
選項(xiàng)可能會(huì)顯示此類信息。附加信息有助于解釋錯(cuò)誤或日志事件的上下文以及可能的解決方案。
查看指定日志級(jí)別日志
您還可以使用日志級(jí)別來獲取調(diào)試、警告甚至關(guān)鍵級(jí)別的日志。這里列出了所有日志級(jí)別和優(yōu)先級(jí)。
0
表示emerg緊急,1
表示alert警報(bào),2
表示crit關(guān)鍵。3
表示錯(cuò)誤。4
表示警告。5
表示注意。6
表示普通信息。7表示調(diào)試消息。
要查看當(dāng)前會(huì)話中的所有錯(cuò)誤級(jí)別的日志,可以運(yùn)行命令journalctl -p 3 -xb
。-p
選項(xiàng)指定日志級(jí)別,這里指定為3,也就是錯(cuò)誤級(jí)別。
-x
選項(xiàng)添加日志的附加信息。-b
選項(xiàng)自上次啟動(dòng),即當(dāng)前會(huì)話以來。
journalctl -p 3 -xb
您還可以指定多個(gè)日志級(jí)別。例如您想查看當(dāng)前會(huì)話中的所有警告、通知和信息日志,請(qǐng)運(yùn)行命令journalctl -p 4..6 -b0
journalctl -p 4..6 -b0
查看日志大小
journald從各種來源收集日志,并存儲(chǔ)包括調(diào)試日志在內(nèi)的各種級(jí)別的日志。雖然保留日志有助于分析和審計(jì),但它們會(huì)占用大量磁盤空間。
您可以運(yùn)行命令journalctl --disk-usage
檢查日志占用多少磁盤空間。當(dāng)您看到輸出時(shí),它將打印消息Archived and active journals take up 2.8G in the file system.。
journalctl --disk-usage
結(jié)論
journalctl
命令還有很多選項(xiàng)和用法,這里不可能全部介紹。如果您想了解更多詳細(xì)信息,建議您閱讀其手冊(cè)頁。
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209499 -
命令
+關(guān)注
關(guān)注
5文章
684瀏覽量
22027 -
日志
+關(guān)注
關(guān)注
0文章
138瀏覽量
10643
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論