如何在Linux中使用journalctl檢查日誌
日誌是任何Linux系統的關鍵組成部分,因為它提供了系統活動的記錄,包括系統事件、使用者操作和系統程序。日誌檢查或日誌監控是定期檢查日誌檔案以識別任何異常或可疑活動(例如登入失敗嘗試、系統崩潰或安全漏洞)的過程。日誌檢查對於維護Linux系統的安全性和穩定性非常重要,因為它允許管理員快速識別和解決問題,並檢測和響應潛在的安全威脅。
基本的journalctl命令
journalctl是一個命令列實用程式,用於檢視和管理使用systemd初始化系統的Linux系統上的日誌。journalctl命令可用於檢視和過濾系統日誌,包括所有系統服務、核心和特定服務或使用者的日誌。該命令可用於顯示整個日誌、檢視特定啟動的日誌或按日期、時間、使用者、程序等過濾日誌。
以下是一些使用journalctl在Linux系統上檢視特定型別日誌的示例:
檢視nginx服務的所有日誌:
journalctl -u nginx
檢視所有登入失敗嘗試的日誌:
journalctl -p authpriv.warning
檢視上次重啟後的所有日誌:
journalctl -b
檢視過去一週的所有日誌:
journalctl --since "1 week ago"
檢視特定時間範圍內的日誌:
journalctl --since "2022-10-01 00:00:00" --until "2022-10-15 23:59:59"
搜尋包含字串“Error”的日誌:
journalctl -S Error
按日期或時間過濾
journalctl允許您使用--since和--until選項按日期或時間過濾日誌。
--since= 或 --after=:顯示自特定時間以來的日誌。時間可以使用多種格式指定,例如“YYYY-MM-DD HH:MM:SS”、“YYYY-MM-DDTHH:MM:SS”甚至自然語言格式,例如“1 hour ago”。
journalctl --since "2022-11-01 00:00:00" journalctl --after "1 hour ago"
--until= 或 --before=:顯示直到特定時間的日誌。與上述相同,時間格式可以有多種。
journalctl --until "2022-11-01 00:00:00" journalctl --before "1 hour ago"
您可以將這兩個選項一起使用以過濾特定日期/時間範圍內的日誌。
journalctl --since "2022-11-01 00:00:00" --until "2022-11-30 23:59:59"
需要注意的是,使用--since和--until選項時,指定的時間是包含在內的。
使用者和程序
journalctl也允許您按使用者和程序過濾日誌。
要按使用者過濾日誌,您可以使用_UID欄位並提供使用者ID作為值。
journalctl _UID=1000
要按程序過濾日誌,您可以使用_PID欄位並提供程序ID作為值。
journalctl _PID=1234
要按命令過濾日誌,您可以使用_COMM欄位並提供命令名稱作為值。
journalctl _COMM=mycommand
要按可執行檔案過濾日誌,您可以使用_EXE欄位並提供可執行檔案路徑作為值。
journalctl _EXE=/usr/bin/mycommand
您還可以連結多個欄位和值以更具體地過濾日誌。
journalctl _UID=1000 _COMM=mycommand journalctl _UID=1000 _PID=1234 _COMM=mycommand
需要注意的是,按使用者或程序過濾時,journalctl返回指定使用者或程序是日誌訊息發起者的日誌。
您還可以使用_SYSTEMD_UNIT按systemd單元過濾日誌,它將顯示與該單元相關的日誌。
journalctl _SYSTEMD_UNIT=my.service
跟蹤和跟隨日誌
journalctl允許您使用-f或--follow選項即時跟蹤和跟隨日誌。當您使用此選項時,journalctl將在日誌新增到日誌時顯示新的日誌條目。
journalctl -f
此命令將在日誌出現時流式傳輸新的日誌,並允許您隨時關注日誌,而無需手動重新整理日誌。
您還可以將其他選項與-f一起使用來過濾您想要即時跟蹤的日誌。例如,要即時跟蹤特定服務的日誌,您可以使用以下命令:
journalctl -f -u myservice
這將流式傳輸myservice的新日誌。
您可以使用ctrl + c退出跟隨模式並返回到正常的shell提示符。
此外,您可以將-n選項與-f一起使用以輸出特定數量的新條目,然後退出。
journalctl -f -n 10
此命令將顯示10個新條目,然後退出。
停用分頁器以獲取直接輸出
預設情況下,journalctl使用less或more之類的分頁程式來顯示日誌條目。這允許您一次一頁地滾動瀏覽日誌。但是,如果您希望完整地檢視日誌,您可以停用分頁器並使用--no-pager選項獲取命令的直接輸出。
journalctl --no-pager
此命令將顯示螢幕上的所有日誌。
您還可以將此選項與其他選項一起使用,例如跟蹤日誌或按日期或時間過濾。
journalctl --no-pager -f journalctl --no-pager --since "1 hour ago"
當您將--no-pager選項與其他選項一起使用時,它將顯示日誌在螢幕上出現後立即顯示,並允許輕鬆地將輸出輸出到檔案或使用管道輸出到另一個命令,如下所示:
journalctl --no-pager > /path/to/logfile.txt journalctl --no-pager | grep -i error
輸出
journalctl允許您使用--output選項指定其輸出的格式。預設情況下,journalctl以易於閱讀和理解的易於閱讀的格式輸出日誌。
您可以從中選擇幾種格式:
json - 以JSON格式輸出日誌。此格式是機器可讀的,並且可以很容易地被指令碼解析。
journalctl --output json
verbose - 以更詳細的格式輸出日誌,包括其他欄位和元資料。
journalctl --output verbose
short - 以較短的格式輸出日誌,只包含最重要的欄位。
journalctl --output short
cat - 以與它們儲存在日誌中的相同格式輸出日誌,這是二進位制的,並非旨在供人閱讀。
journalctl --output cat
需要注意的是,指定輸出格式時,journalctl將只輸出與所選格式相關的欄位。
您可以將此選項與其他選項一起使用,以使輸出符合您的需求。
journalctl --output json --since "1 hour ago" --until "now"
當您想要使用指令碼或外部工具分析日誌時,或者當您想要以更容易被另一個應用程式或服務使用的格式輸出日誌時,這非常有用。
結論
journalctl是用於檢視和分析使用systemd初始化系統的Linux系統上的日誌的強大工具。使用journalctl,您可以檢視所有系統服務和核心的日誌,以及特定服務或使用者的日誌。
您可以按不同的條件過濾日誌,例如日期和時間、使用者、程序等等。您還可以以不同的格式輸出日誌,例如json或verbose,還可以停用分頁器以獲取命令的直接輸出,或使用-f選項即時跟蹤日誌。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP