ubuntu journalctl — 檢索 systemd 日誌

經常使用:
查看最近1000行log
sudo journalctl -f --lines=1000 -u server.$PROJECT_NAME
--no-full--full-l

若是字段內容超長則以省略號(…)截斷以適應列寬。 默認顯示完整的字段內容(超長的部分換行顯示或者被分頁工具截斷)。html

老舊的 -l/--full 選項 僅用於撤銷已有的 --no-full 選項,除此以外沒有其餘用處。linux

-a--all

完整顯示全部字段內容, 即便其中包含不可打印字符或者字段內容超長。apache

-f--follow

只顯示最新的日誌項,而且不斷顯示新生成的日誌項。 此選項隱含了 -n 選項。json

-e--pager-end

在分頁工具內當即跳轉到日誌的尾部。 此選項隱含了 -n1000 以確保分頁工具沒必要緩存太多的日誌行。 不過這個隱含的行數能夠被明確設置的 -n 選項覆蓋。 注意,此選項僅可用於 less(1) 分頁器。緩存

-n--lines=

限制顯示最新的日誌行數。 --pager-end 與 --follow 隱含了此選項。 此選項的參數:若爲正整數則表示最大行數; 若爲 "all" 則表示不限制行數; 若不設參數則表示默認值10行。安全

--no-tail

顯示全部日誌行, 也就是用於撤銷已有的 --lines= 選項(即便與 -f 連用)。網絡

-r--reverse

反轉日誌行的輸出順序, 也就是最早顯示最新的日誌。數據結構

-o--output=

控制日誌的輸出格式。 可使用以下選項:less

short 

這是默認值, 其輸出格式與傳統的 syslog 文件的格式類似, 每條日誌一行。ide

short-iso 

與 short 相似,只是將時間戳字段以 ISO 8601 格式顯示。

short-precise 

與 short 相似,只是將時間戳字段的秒數精確到微秒級別。

short-monotonic 

與 short 相似,只是將時間戳字段的零值從內核啓動時開始計算。

short-unix 

與 short 相似,只是將時間戳字段顯示爲從"UNIX時間原點"(1970-1-1 00:00:00 UTC)以來的秒數。 精確到微秒級別。

verbose 

以結構化的格式顯示每條日誌的全部字段。

export 

將日誌序列化爲二進制字節流(大部分依然是文本) 以適用於備份與網絡傳輸(詳見 Journal Export Format 文檔)。

json 

將日誌項按照JSON數據結構格式化, 每條日誌一行(詳見 Journal JSON Format 文檔)。

json-pretty 

將日誌項按照JSON數據結構格式化, 可是每一個字段一行, 以便於人類閱讀。

json-sse 

將日誌項按照JSON數據結構格式化,每條日誌一行,可是用大括號包圍, 以適應 Server-Sent Events 的要求。

cat 

僅顯示日誌的實際內容, 而不顯示與此日誌相關的任何元數據(包括時間戳)。

--utc

以世界統一時間(UTC)表示時間

--no-hostname

不顯示來源於本機的日誌消息的主機名字段。 此選項僅對 short 系列輸出格式(見上文)有效。

-x--catalog

在日誌的輸出中增長一些解釋性的短文本, 以幫助進一步說明日誌的含義、 問題的解決方案、支持論壇、 開發文檔、以及其餘任何內容。 並不是全部日誌都有這些額外的幫助文本, 詳見 Message Catalog Developer Documentation 文檔。

注意,若是要將日誌輸出用於bug報告, 請不要使用此選項。

-q--quiet

當以普通用戶身份運行時, 不顯示任何警告信息與提示信息。 例如:"-- Logs begin at ...", "-- Reboot --"

-m--merge

混合顯示包括遠程日誌在內的全部可見日誌。

-b [ID][±offset]--boot=[ID][±offset]

顯示特定於某次啓動的日誌, 這至關於添加了一個 "_BOOT_ID=" 匹配條件。

若是參數爲空(也就是 ID 與 ±offset 都未指定), 則表示僅顯示本次啓動的日誌。

若是省略了 ID , 那麼當 ±offset 是正數的時候, 將從日誌頭開始正向查找, 不然(也就是爲負數或零)將從日誌尾開始反響查找。 舉例來講, "-b 1"表示按時間順序排列最先的那次啓動, "-b 2"則表示在時間上第二早的那次啓動; "-b -0"表示最後一次啓動, "-b -1"表示在時間上第二近的那次啓動, 以此類推。 若是 ±offset 也省略了, 那麼至關於"-b -0", 除非本次啓動不是最後一次啓動(例如用 --directory 指定了另一臺主機上的日誌目錄)。

若是指定了32字符的 ID , 那麼表示以此 ID 所表明的那次啓動爲基準 計算偏移量(±offset), 計算方法同上。 換句話說, 省略 ID 表示以本次啓動爲基準 計算偏移量(±offset)。

--list-boots

列出每次啓動的 序號(也就是相對於本次啓動的偏移量)、32字符的ID、 第一條日誌的時間戳、最後一條日誌的時間戳。

-k--dmesg

僅顯示內核日誌。隱含了 -b 選項以及 "_TRANSPORT=kernel" 匹配項。

-t--identifier=SYSLOG_IDENTIFIER

僅顯示 syslog 識別符爲 SYSLOG_IDENTIFIER 的日誌項。

能夠屢次使用該選項以指定多個識別符。

-u--unit=UNIT|PATTERN

僅顯示屬於特定單元的日誌。 也就是單元名稱正好等於 UNIT 或者符合 PATTERN 模式的單元。 這至關於添加了一個 "_SYSTEMD_UNIT=UNIT" 匹配項(對於 UNIT 來講), 或一組匹配項(對於 PATTERN 來講)。

能夠屢次使用此選項以添加多個並列的匹配條件(至關於用"OR"邏輯鏈接)。

--user-unit=

僅顯示屬於特定用戶會話單元的日誌。 至關於同時添加了 "_SYSTEMD_USER_UNIT=" 與 "_UID=" 兩個匹配條件。

能夠屢次使用此選項以添加多個並列的匹配條件(至關於用"OR"邏輯鏈接)。

-p--priority=

根據日誌等級(包括等級範圍)過濾輸出結果。 日誌等級數字與其名稱之間的對應關係以下 (參見 syslog(3)): "emerg" (0), "alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7) 。 若設爲一個單獨的數字或日誌等級名稱, 則表示僅顯示小於或等於此等級的日誌 (也就是重要程度等於或高於此等級的日誌)。 若使用 FROM..TO.. 設置一個範圍, 則表示僅顯示指定的等級範圍內(含兩端)的日誌。 此選項至關於添加了 "PRIORITY=" 匹配條件。

-c--cursor=

從指定的遊標(cursor)開始顯示日誌。 [提示]每條日誌都有一個"__CURSOR"字段,相似於該條日誌的指紋。

--after-cursor=

從指定的遊標(cursor)以後開始顯示日誌。 若是使用了 --show-cursor 選項, 則也會顯示遊標自己。

--show-cursor

在最後一條日誌以後顯示遊標, 相似下面這樣,以"--"開頭:

-- cursor: s=0639...

遊標的具體格式是私有的(也就是沒有公開的規範), 而且會變化。

-S--since=-U--until=

顯示晚於指定時間(--since=)的日誌、顯示早於指定時間(--until=)的日誌。 參數的格式相似 "2012-10-30 18:17:16" 這樣。 若是省略了"時:分:秒"部分, 則至關於設爲 "00:00:00" 。 若是僅省略了"秒"的部分則至關於設爲 ":00" 。 若是省略了"年-月-日"部分, 則至關於設爲當前日期。 除了"年-月-日 時:分:秒"格式, 參數還能夠進行以下設置: (1)設爲 "yesterday", "today", "tomorrow" 以表示那一天的零點(00:00:00)。 (2)設爲 "now" 以表示當前時間。 (3)能夠在"年-月-日 時:分:秒"前加上 "-"(前移) 或 "+"(後移) 前綴以表示相對於當前時間的偏移。 關於時間與日期的詳細規範, 參見 systemd.time(7)

-F--field=

顯示全部日誌中某個字段的全部可能值。 [譯者注]相似於SQL語句:"SELECT DISTINCT 某字段 FROM 所有日誌"

-N--fields

輸出全部日誌字段的名稱

--system--user

僅顯示系統服務與內核的日誌(--system)、 僅顯示當前用戶的日誌(--user)。 若是兩個選項都未指定,則顯示當前用戶的全部可見日誌。

-M--machine=

顯示來自於正在運行的、特定名稱的本地容器的日誌。 參數必須是一個本地容器的名稱。

-D DIR--directory=DIR

僅顯示來自於特定目錄中的日誌, 而不是默認的運行時和系統日誌目錄中的日誌。

--file=GLOB

GLOB 是一個能夠包含"?"與"*"的文件路徑匹配模式。 表示僅顯示來自與指定的 GLOB 模式匹配的文件中的日誌, 而不是默認的運行時和系統日誌目錄中的日誌。 能夠屢次使用此選項以指定多個匹配模式(多個模式之間用"OR"邏輯鏈接)。

--root=ROOT

在對日誌進行操做時, 將 ROOT 視爲系統的根目錄。 例如 --update-catalog 將會建立 ROOT/var/lib/systemd/catalog/database

--new-id128

此選項並不用於顯示日誌內容, 而是用於從新生成一個標識日誌分類的 128-bit ID 。 此選項的目的在於 幫助開發者生成易於辨別的日誌消息, 以方便調試。

--header

此選項並不用於顯示日誌內容, 而是用於顯示日誌文件內部的頭信息(相似於元數據)。

--disk-usage

此選項並不用於顯示日誌內容, 而是用於顯示全部日誌文件(歸檔文件與活動文件)的磁盤佔用總量。

--vacuum-size=--vacuum-time=--vacuum-files=

這些選項並不用於顯示日誌內容, 而是用於清理日誌歸檔文件(並不清理活動的日誌文件), 以釋放磁盤空間。 --vacuum-size= 可用於限制歸檔文件的最大磁盤使用量 (可使用 "K", "M", "G", "T" 後綴); --vacuum-time= 可用於清除指定時間以前的歸檔 (可使用 "s", "m", "h", "days", "weeks", "months", "years" 後綴); --vacuum-files= 可用於限制日誌歸檔文件的最大數量。 注意,--vacuum-size= 對 --disk-usage 的輸出僅有間接效果, 由於 --disk-usage 輸出的是歸檔日誌與活動日誌的總量。 一樣,--vacuum-files= 也未必必定會減小日誌文件的總數, 由於它一樣僅做用於歸檔文件而不會刪除活動的日誌文件。 此三個選項能夠同時使用,以同時從三個維度去限制歸檔文件。 若將某選項設爲零,則表示取消此選項的限制。

--list-catalog [128-bit-ID...

簡要列出日誌分類信息, 其中包括對分類信息的簡要描述。

若是明確指定了分類ID(128-bit-ID), 那麼僅顯示指定的分類。

--dump-catalog [128-bit-ID...

詳細列出日誌分類信息 (格式與 .catalog 文件相同)。

若是明確指定了分類ID(128-bit-ID), 那麼僅顯示指定的分類。

--update-catalog

更新日誌分類索引二進制文件。 每當安裝、刪除、更新了分類文件,都須要執行一次此動做。

--setup-keys

此選項並不用於顯示日誌內容, 而是用於生成一個新的FSS(Forward Secure Sealing)密鑰對。 此密鑰對包含一個"sealing key"與一個"verification key"。 "sealing key"保存在本地日誌目錄中, 而"verification key"則必須保存在其餘地方。 詳見 journald.conf(5) 中的 Seal= 選項。

--force

與 --setup-keys 連用, 表示即便已經配置了FSS(Forward Secure Sealing)密鑰對, 也要強制從新生成。

--interval=

與 --setup-keys 連用,指定"sealing key"的變化間隔。 較短的時間間隔會致使佔用更多的CPU資源, 可是可以減小未檢測的日誌變化時間。 默認值是 15min

--verify

檢查日誌文件的內在一致性。 若是日誌文件在生成時開啓了FSS特性, 而且使用 --verify-key= 指定了FSS的"verification key", 那麼,同時還將驗證日誌文件的真實性。

--verify-key=

與 --verify 選項連用, 指定FSS的"verification key"

--sync

要求日誌守護進程將全部未寫入磁盤的日誌數據刷寫到磁盤上, 而且一直阻塞到刷寫操做實際完成以後才返回。 所以該命令能夠保證當它返回的時候, 全部在調用此命令的時間點以前的日誌, 已經所有安全的刷寫到了磁盤中。

--flush

要求日誌守護進程 將 /run/log/journal 中的日誌數據 刷寫到 /var/log/journal 中 (若是持久存儲設備當前可用的話)。 此操做會一直阻塞到操做完成以後纔會返回, 所以能夠確保在該命令返回時, 數據轉移確實已經完成。 注意,此命令僅執行一個單獨的、一次性的轉移動做, 若沒有數據須要轉移, 則此命令什麼也不作, 而且也會返回一個表示操做已正確完成的返回值。

--rotate

要求日誌守護進程滾動日誌文件。 此命令會一直阻塞到滾動完成以後纔會返回。

-h--help

顯示簡短的幫助信息並退出。

--version

顯示簡短的版本信息並退出。

--no-pager

不將程序的輸出內容管道(pipe)給分頁程序。

退出狀態

返回值爲 0 表示成功, 非零返回值表示失敗代碼。

環境變量

$SYSTEMD_PAGER

指定分頁程序。僅在未指定 --no-pager 選項時有意義。 此變量會覆蓋 $PAGER 的值。 將此變量設爲空字符串或 "cat" 等價於使用 --no-pager 選項。

$SYSTEMD_LESS

用於覆蓋 默認傳遞給 less 程序的命令行選項 ("FRSXMK")。

例子

不帶任何選項與參數,表示顯示所有日誌

journalctl

僅指定一個匹配條件, 顯示全部符合該匹配條件的日誌

journalctl _SYSTEMD_UNIT=avahi-daemon.service

指定了兩個不一樣字段的匹配條件, 顯示同時知足兩個匹配條件的日誌

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097

指定了同一個字段的兩個不一樣匹配條件, 顯示知足其中任意一個條件的日誌

journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

使用 "+" 鏈接兩組匹配條件, 至關於邏輯"OR"鏈接

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service

顯示全部 D-Bus 進程產生的日誌

journalctl /usr/bin/dbus-daemon

顯示上一次啓動所產生的全部內核日誌

journalctl -k -b -1

持續顯示 apache.service 服務不斷生成的日誌

journalctl -f -u apache
相關文章
相關標籤/搜索