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

對于大規(guī)模系統(tǒng)日志的日志模式提煉算法的優(yōu)化

基于Hadoop與聚類分析的網(wǎng)絡(luò)日志分析模型

NAS日志分析用戶指南
Linux系統(tǒng)日志文件中的JFS文件系統(tǒng)

學(xué)會用日志了解你的 Linux 系統(tǒng)
在 Linux 中使用日志來排錯
嵌入式linux設(shè)備中應(yīng)用運行日志的實現(xiàn)

解析Linux系統(tǒng)日志
linux日志管理之journalctl命令

Jtti:如何查看yum命令的錯誤日志來診斷問題?
Linux高頻命令終極指南
Linux實時查看日志的四種命令詳解

詳解journalctl日志管理

評論