journalctl命令

journalctl命令

journalctl命令是Systemd日誌系統的一個命令,主要用途是用來查看經過Systemd日誌系統記錄的日誌,在Systemd出現以前,Linux系統及各應用的日誌都是分別管理的,Systemd取代了initd以後便開始統一管理了全部Unit的啓動日誌,能夠只用一個journalctl命令,查看全部內核和應用的日誌。html

語法

journalctl [OPTIONS...] [MATCHES...]

參數

  • --no-full, --full, -l: 當字段匹配可用列時將其省略,默認設置是顯示完整字段,容許它們換行或被截斷,舊的選項-l/--full再也不有用,除了撤銷--no-full
  • -a, --all: 完整顯示全部字段,即便它們包含不可打印字符或很是長。
  • -f, --follow: 僅顯示最近的日誌條目,並在新條目附加到日誌時連續打印。
  • -e, --pager-end: 當即跳到日誌的結尾內隱含的工具,這意味着-n 1000能夠保證分頁器不會緩衝大小不受限制的日誌,能夠在命令行中使用顯式的-n和其餘一些數值來覆蓋它,注意,這個選項只支持less頁。
  • -n, --lines=: 顯示最近的日誌事件並限制顯示的事件數,若是使用--follow,則隱含此選項,參數爲正整數,是可選的,默認爲10
  • --no-tail: 顯示全部存儲的輸出行,即便在follow模式下也是如此,撤消--line=的效果。
  • -r, --reverse: 反轉輸出,以便首先顯示最新的條目。
  • -o, --output=: 控制所顯示的日誌條目的格式,採用如下選項之一:
    • short: 默認值,並生成與經典syslog文件格式基本相同的輸出,每一個日誌條目顯示一行。
    • short-iso: 與short很是類似,但顯示ISO 8601 wallclock時間戳。
    • short-precise: 與short很是類似,可是以微秒的精度顯示時間戳。
    • short-monotonic: 很是類似,可是顯示的是monotonic的時間戳,而不是wallclock的時間戳。
    • verbose: 顯示具備全部字段的完整結構條目。
    • export: 將日誌序列化成適合備份和網絡傳輸的二進制流,主要是基於文本的。
    • json: 將條目格式化爲JSON數據結構,每行一個。
    • json-pretty: 將條目格式化爲JSON數據結構,但將它們格式化爲多行,以令人們更容易閱讀。
    • json-sse: 將條目格式化爲JSON數據結構,但將它們包裝爲適合服務器發送的Eventsm的格式。
    • cat: 生成一個很是簡潔的輸出,只顯示每一個日誌條目的實際消息,沒有元數據,甚至沒有時間戳。
  • -x, --catalog: 用來自消息目錄的解釋文本擴充日誌行,這將向輸出中可用的日誌消息中添加解釋性幫助文本,這些簡短的幫助文本將解釋錯誤或日誌事件的上下文、可能的解決方案,以及指向支持論壇、開發人員文檔和任何其餘相關手冊的指針,注意,幫助文本不是對全部消息均可用,而是僅對選定的消息可用。此外,將journalctl輸出附加到錯誤報告時,請不要使用-x
  • -q, --quiet: 當以普通用戶身份運行時,禁止顯示有關不可訪問的系統日誌的任何警告消息。
  • -m, --merge: 顯示全部可用的日誌,包括遠程日誌的交叉條目。
  • -b [ID][±offset], --boot=[ID][±offset]: 顯示來自特定啓動的消息,這將爲_BOOT_ID=添加匹配項,參數可能爲空,在這種狀況下,將顯示當前引導的日誌,若是省略引導ID,則正偏移量將查找從日誌開始的引導,而等於或小於零的偏移量將查找從日誌結束的引導,所以,1表示按時間順序在日誌中找到的第一個引導,2表示第二個引導,依此類推,而-0表示最後一個引導,-1表示最後一個引導以前的引導,依此類推,空偏移量等同於指定-0,除非當前引導不是最後一次引導,例如由於指定--directory查看來自不一樣計算機的日誌。若是指定了32個字符的ID,則能夠選擇後跟偏移量,該偏移量標識相對於boot ID給定的引導,負值表示較早的引導,正值表示較晚的引導,若是未指定offset,則假定值爲零,並顯示ID給定的引導日誌。
  • --list-boots: 顯示引導編號(相對於當前引導)、它們的id以及與引導相關的第一條和最後一條消息的時間戳的列表。
  • -k, --dmesg: 只顯示內核消息,這意味着-b並添加匹配_TRANSPORT=kernel
  • -u, --unit=UNIT|PATTERN: 顯示指定的systemd單元單元的消息,或任何與PATTERN匹配的單元的消息,若是指定了模式,日誌中找到的單元名稱列表將與指定的模式進行比較,並使用全部匹配的內容,對於每一個單元名,將爲來自該單元的消息添加一個匹配_SYSTEMD_UNIT= unit,以及來自systemd的消息和關於指定單元的coredumps的消息的額外匹配,該參數能夠指定屢次。
  • --user-unit=: 顯示指定用戶會話單元的消息,這將爲來自單元的消息_SYSTEMD_USER_UNIT=_UID=添加匹配,併爲來自會話systemd的消息和關於指定單元的coredumps的消息添加額外匹配,該參數能夠指定屢次。
  • -p, --priority=: 根據消息優先級或優先級範圍篩選輸出,接受單個數字或文本日誌級別(即在0 emerg7 debug之間),或以..形式表示的numeric/text日誌級別範圍,日誌級別是syslog中記錄的一般的syslog日誌級別,即emerg 0alert 1crit 2err 3warning 4notice 5info 6debug 7,若是指定一個日誌級別,則顯示該級別或更低(值更低優先級更高)日誌級別的全部消息,若是指定了一個範圍,則將顯示該範圍內的全部消息,包括該範圍的開始值和結束值,這將爲指定的優先級添加PRIORITY=匹配項。
  • -c, --cursor=: 從傳遞的遊標指定的日誌位置開始顯示條目。
  • --after-cursor=: 從該光標指定的位置以後的日誌位置開始顯示條目,使用--show-cursor選項時將顯示光標。
  • --show-cursor: 光標顯示在最後一項的兩個破折號後,相似於-- cursor: s=0639...,光標的格式是私有的,可能會更改。
  • --since=, --until=: 分別在指定日期或更新日期,或在指定日期或更新日期開始顯示條目,日期規範的格式應該是2012-10-30 18:17:16,若是省略了時間部分,則假定爲00:00:00,若是隻省略了seconds組件,則假定爲:00,若是省略了date部分,則假定爲當前日期,或者理解字符串yesterdaytodaytomorrow,分別表示當前日期的前一天00:00:00、當前日期的前一天00:00:00、當前日期的後一天,now指的是當前時間,最後,能夠指定相對次數,以-+做爲前綴,分別表示當前時間以前或以後的次數。
  • -F, --field=: 在日誌的全部條目中打印指定字段能夠接受的全部可能數據值。
  • --system, --user: 顯示來自系統服務和內核的消息(使用--system),顯示來自當前用戶服務的消息(使用--user),若是二者都未指定,則顯示用戶能夠看到的全部消息。
  • -M, --machine=: 顯示來自運行中的本地容器的消息,指定要鏈接的容器名稱。
  • -D DIR, --directory=DIR: 以目錄路徑做爲參數,若是指定,journalctl將操做指定的日誌目錄DIR,而不是默認的運行時和系統日誌路徑。
  • --file=GLOB: 以文件glob做爲參數,若是指定,journalctl將操做與GLOB匹配的指定日誌文件,而不是默認的運行時和系統日誌路徑,能夠指定屢次,在這種狀況下文件將被適當地交錯。
  • --root=ROOT: 以目錄路徑做爲參數,若是指定,journalctl將對指定目錄下的目錄文件層次結構而不是根目錄進行操做,例如--update catalog將建立root/var/lib/systemd/catalog/database
  • --new-id128: 生成一個新的適合標識消息的128ID,而不是顯示日誌內容,這是爲那些須要爲他們引入的新消息使用新標識符並但願使其可識別的開發人員準備的,這將以三種不一樣的格式打印新的ID,這些格式能夠複製到源代碼或相似的文件中。
  • --header: 不是顯示日誌內容,而是顯示所訪問日誌字段的內部頭信息。
  • --disk-usage: 顯示全部日誌文件的當前磁盤使用狀況。
  • --list-catalog [128-bit-ID...]: 以消息id表的形式列出消息目錄的內容,以及它們的簡短描述字符串,若是指定了任何128id,則只顯示那些條目。
  • --dump-catalog [128-bit-ID...]: 顯示消息目錄的內容,條目由由兩個破折號和ID組成的行分隔,格式與.catalog文件相同,若是指定了任何128id,則只顯示那些條目。
  • --update-catalog: 更新消息目錄索引,每次安裝、刪除或更新新的編目文件以從新生成二進制編目索引時,都須要執行此命令。
  • --setup-keys: 生成一個用於前向安全密封FSS的新密鑰對,而不是顯示日誌內容,這將生成一個密封密鑰和一個驗證密鑰,密封密鑰存儲在日誌數據目錄中,並保留在主機上,驗證鍵應該存儲在外部。
  • --force: 當傳遞了--setup keys而且已經配置了前向安全密封FSS時,從新建立FSS keys
  • --interval=: 指定使用--setup-keys生成FSS密鑰對時密封密鑰的更改間隔,較短的時間間隔會增長CPU消耗,但會縮短沒法檢測到的日誌更改的時間範圍,默認爲15分鐘。
  • --verify: 檢查日誌文件的內部一致性,若是文件是在啓用FSS的狀況下生成的,而且FSS驗證密鑰是用--verify key=指定的,則會驗證日誌文件的真實性。
  • --verify-key=: 指定用於--verify操做的FSS驗證密鑰。
  • --no-pager: 不將程序的輸出內容管道pipe給分頁程序。
  • --vacuum-size=BYTES: 將磁盤使用減小到指定大小如下。
  • --vacuum-files=INT: 僅保留指定數量的日記文件。
  • --vacuum-time=TIME: 任何早於指定時間點的條目都將被刪除。
  • --rotate: 要求日誌守護進程滾動日誌文件,此命令會一直阻塞到滾動操做完成以後纔會返回,日誌滾動能夠確保全部活動的日誌文件都被關閉、並被重命名以完成歸檔,同時新的空白日誌文件將被建立,併成爲新的活動日誌文件,一般能夠與--vacuum-size=--vacuum-time=--vacuum-file=一塊兒使用, 以提升日誌清理的效率。
  • -h, --help: 輸出幫助信息。
  • --version: 輸出版本信息。

示例

顯示本次啓動以來的所有日誌。linux

journalctl

顯示內核日誌。nginx

journalctl -k

使用-n參數能夠顯示最後n行日誌,若是不指定行數,默認顯示10行。git

journalctl -n 20

查看指定進程的日誌。github

journalctl _PID=1

顯示最近30分鐘的日誌。shell

journalctl --since=-30m

顯示2021年以來的日誌。json

journalctl --since="2021-01-01"

顯示今天的日誌。安全

journalctl --since=today

使用-f參數能夠實現類型tail -f的功能,持續監控最新的日誌。服務器

journalctl -f

查看指定Unit的日誌。網絡

journalctl -u nginx.service

查看日誌佔用的磁盤空間。

journalctl --disk-usage

要求日誌守護進程滾動日誌文件,日誌滾動能夠確保全部活動的日誌文件都被關閉、並被重命名以完成歸檔,同時新的空白日誌文件將被建立,併成爲新的活動日誌文件。

journalctl --rotate

清理一個周前的日誌。

journalctl --vacuum-time=1week

將磁盤佔用減小到指定大小如下。

journalctl --vacuum-size=10M

每日一題

https://github.com/WindrunnerMax/EveryDay

參考

http://www.jinbuguo.com/systemd/journalctl.html#
https://www.commandlinux.com/man-page/man1/journalctl.1.html
https://blog.orchidflower.cn/2020/04/20/linux-command-introduction-04-journalctl/
相關文章
相關標籤/搜索