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