如何使用journalctl讀取linux系統日誌

隨著systemd的引入,Linux系統日誌記錄發生了變化。瞭解如何使用journalctl命令讀取和過濾系統日誌訊息。...

隨著systemd的引入,Linux系統日誌記錄發生了變化。瞭解如何使用journalctl命令讀取和過濾系統日誌訊息。

集中式日誌記錄

對爭議並不陌生,systemd系統和****器在收集系統日誌的方式上引入了一個重大的改變。根據建立日誌的服務或守護程式,日誌通常位於檔案系統中的不同位置。但他們都有一個共同點。它們是純文字檔案。

使用systemd,所有系統、引導和核心日誌檔案都由一個集中的、專用的日誌解決方案收集和管理。它們儲存的格式是二進位制的。這有助於以不同的格式提取資料,如我們將看到的JSON。

它還可以更容易地交叉引用以前記錄在單獨日誌檔案中的相關資訊。因為資料現在儲存在一個單獨的日誌中,所以可以選擇來自多個感興趣來源的資料,並將其顯示在一個相互交織的條目列表中。

journalctl是用於處理日誌的工具。

沒有花邊的日記

您可以在不使用命令列引數的情況下呼叫journalctl:

journalctl

如何使用journalctl讀取linux系統日誌

journalctl顯示整個日誌,最早的條目位於列表頂部。列表以less顯示,允許您使用less的常用導航功能進行頁面和搜尋。您還可以使用左箭頭和右箭頭鍵橫向滾動以讀取寬日誌條目。

如何使用journalctl讀取linux系統日誌

按結束鍵將直接跳到列表的底部,以及最新的日誌條目。

如何使用journalctl讀取linux系統日誌

按Ctrl+C退出。

相關:如何在Linux上使用less命令

儘管可以在不使用sudo的情況下呼叫journalctl,但是如果使用sudo,則可以確保看到日誌中的所有細節。

sudo journalctl

如何使用journalctl讀取linux系統日誌

如果需要,可以使用--no pager選項使journalctl將其輸出傳送到終端視窗,而不是傳送到less。

sudo journalctl --no-pager

如何使用journalctl讀取linux系統日誌

輸出在終端視窗中快速滾動,然後返回到命令提示符。

如何使用journalctl讀取linux系統日誌

要限制journalctl返回的行數,請使用-n(行)選項。讓我們要求10行輸出:

sudo journalctl -n 10

如何使用journalctl讀取linux系統日誌

跟蹤日誌更新

要使JournalCtrl在到達日記賬時顯示最新條目,請使用-f(跟隨)選項。

sudo journalctl -f

如何使用journalctl讀取linux系統日誌

如何使用journalctl讀取linux系統日誌

最新條目的時間戳為07:09:07。當新的活動發生時,新的條目將附加到顯示的底部。近實時更新酷!

如何使用journalctl讀取linux系統日誌

在07:09:59,一個名為geek app的應用程式在日誌中注入了一個日誌條目,上面寫著“來自HTG的新訊息”

更改顯示格式

因為日誌是一個二進位制檔案,所以需要將其中的資料翻譯或解析為文字才能顯示給您。使用不同的解析器,可以從相同的二進位制源資料建立不同的輸出格式。journalctl可以使用幾種不同的格式。

預設輸出是short格式,這與經典的系統日誌格式非常相似。要顯式請求短格式,請使用-o(output)選項和short修飾符。

sudo journalctl -n 10 -o short-full

如何使用journalctl讀取linux系統日誌

從左到右,欄位為:

  • 建立郵件的時間,以本地時間為單位。
  • 主機名。
  • 程序名稱。這是生成訊息的程序。
  • 日誌訊息。

要獲得完整的日期和時間戳,請使用short-full修飾符:

sudo journalctl -n 10 -o short-full

如何使用journalctl讀取linux系統日誌

此輸出中的日期和時間格式是您在按時段選擇日誌訊息時需要提供日期和時間的格式,我們將很快看到。

要檢視每個日誌訊息附帶的所有元資料,請使用詳細修飾符。

sudo journalctl -n 10 -o verbose

如何使用journalctl讀取linux系統日誌

有許多可能的欄位,但很少所有欄位都出現在訊息中。

如何使用journalctl讀取linux系統日誌

一個值得討論的領域是優先順序領域。在本例中,它的值為6。該值表示訊息的重要性:

  • 0:緊急。系統無法使用。
  • 1:警惕。已標記應立即糾正的狀況。
  • 2:關鍵。這包括主應用程式中的崩潰、核心轉儲和重大故障。
  • 3:錯誤。已報告錯誤,但不認為嚴重。
  • 4:警告。引起您的注意,如果忽略,可能會成為一個錯誤。
  • 5:通知。用於報告異常事件,但不報告錯誤。
  • 6:資訊。常規操作資訊。這些不需要採取行動。
  • 7:除錯。將訊息放入應用程式中,使其更易於除錯。

如果要將輸出顯示為格式正確的JavaScript物件表示法(JSON)物件,請使用JSON修飾符:

sudo journalctl -n 10 -o json

如何使用journalctl讀取linux系統日誌

每條訊息都被正確地包裝為一個格式良好的JSON物件,並在每行輸出中顯示一條訊息。

要使JSON輸出漂亮地打印出來,請使用JSON漂亮修飾符。

sudo journalctl -n 10 -o json-pretty

如何使用journalctl讀取linux系統日誌

每個JSON物件被分割成多行,每個名稱-值對位於新行上。

如何使用journalctl讀取linux系統日誌

要僅檢視日誌條目訊息,而不檢視時間戳或其他元資料,請使用cat修飾符:

sudo journalctl -n 10 -o cat

如何使用journalctl讀取linux系統日誌

這種顯示格式會使您很難識別是哪個程序引發了日誌事件,儘管有些訊息確實包含線索。

如何使用journalctl讀取linux系統日誌

按時間段選擇日誌訊息

要將journalctl的輸出限制在您感興趣的時間段內,請使用-S(因為)和-U(直到)選項。

要檢視特定時間和日期以來的日誌條目,請使用以下命令:

sudo journalctl -S "2020-91-12 07:00:00"

如何使用journalctl讀取linux系統日誌

顯示僅包含在命令中的日期和時間之後到達的訊息。

如何使用journalctl讀取linux系統日誌

要定義要報告的時間段,請同時使用-S(自)和-U(直到)選項。此命令檢視15分鐘內的日誌訊息:

sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00"

如何使用journalctl讀取linux系統日誌

如果您知道系統上發生了一些奇怪的事情,並且大致是在什麼時候發生的,那麼這是一個很好的組合用法。

如何使用journalctl讀取linux系統日誌

使用相對時間段

選擇時段時可以使用相對定址。這意味著你可以說“向我展示從一天前到現在的所有事件”這正是這個命令的意思。“d”代表“天”;“-1”代表過去的一天。

sudo journalctl -S -1d

如何使用journalctl讀取linux系統日誌

日誌訊息從昨天00:00:00到“現在”列出

如何使用journalctl讀取linux系統日誌

如果您想調查最近發生的事情,可以指定以小時為單位的相對時間段。下面我們正在檢視最後一小時的日誌訊息:

sudo journalctl -S -1h

如何使用journalctl讀取linux系統日誌

最後一小時的訊息將為您顯示。您還可以使用“m”設定以分鐘為單位的相對時間段,使用“w”設定以周為單位的相對時間段。

如何使用journalctl讀取linux系統日誌

journalctl瞭解今天、昨天和明天。這些修飾符提供了一種指定公共時間段的簡便方法。要檢視昨天發生的所有事件,請使用以下命令:

sudo journalctl -S yesterday

如何使用journalctl讀取linux系統日誌

昨天發生的所有日誌事件,直到午夜00:00:00,都將為您檢索和顯示。

如何使用journalctl讀取linux系統日誌

要檢視到目前為止收到的所有日誌訊息,請使用以下命令:

sudo journalctl -S today

如何使用journalctl讀取linux系統日誌

顯示從00:00:00到發出命令的所有內容。

如何使用journalctl讀取linux系統日誌

您可以混合使用不同的時間段修飾符。要檢視從兩天前到今天開始的所有內容,請使用以下命令:

sudo journalctl -S -2d -U today

如何使用journalctl讀取linux系統日誌

從前天到今天的所有內容都將被檢索和顯示。

如何使用journalctl讀取linux系統日誌

按資料欄位選擇日誌訊息

您可以搜尋與範圍廣泛的日誌欄位匹配的日誌訊息。這些搜尋嘗試在附加到每條訊息的元資料中查詢匹配項。建議您參考欄位列表並選擇對您最有用的欄位。

請記住,應用程式是否完成每個欄位完全取決於應用程式的作者。你不能保證每個欄位都會被填充。

所有日記欄位修飾符的使用方式都相同。我們將在下面的示例中使用一些。要查詢來自特定應用程式的日誌訊息,請使用\u COMM(command)修飾符。如果還使用-f(follow)選項,journalctl將在新訊息到達時跟蹤來自此應用程式的訊息。

sudo journalctl -f _COMM=geek-app

如何使用journalctl讀取linux系統日誌

可以使用生成日誌訊息的程序的程序ID搜尋日誌條目。使用ps命令查詢要搜尋的守護程序或應用程式的程序id。

sudo journalctl _PID=751

如何使用journalctl讀取linux系統日誌

在用於研究本文的機器上,SSH守護程序是process751。

如何使用journalctl讀取linux系統日誌

您還可以按使用者Id進行搜尋。這是啟動應用程式或命令的人員或程序所有者的使用者Id。

sudo journalctl _UID=1000

如何使用journalctl讀取linux系統日誌

與任何其他使用者ID關聯的所有訊息都將被過濾掉。僅顯示與使用者1000相關的訊息:

如何使用journalctl讀取linux系統日誌

搜尋與特定應用程式相關的日誌訊息的另一種方法是提供可執行檔案的路徑。

sudo journalctl /usr/bin/anacron

如何使用journalctl讀取linux系統日誌

檢索並顯示所有anacron排程程式日誌訊息。

如何使用journalctl讀取linux系統日誌

為了使搜尋更容易,我們可以要求journalctl列出它持有的所有值,用於任何日誌欄位。

要檢視journalctl為其記錄日誌訊息的使用者ID,請使用-F(fields)選項,並傳遞UID欄位識別符號。

journalctl -F _UID

如何使用journalctl讀取linux系統日誌

我們再來看一下組ID(GID):

journalctl -F _GID

如何使用journalctl讀取linux系統日誌

您可以使用任何日誌欄位識別符號來執行此操作。

列出核心訊息

有一種內建的方法可以快速隔離核心訊息。你不需要自己搜尋和隔離它們。k(kernel)選項刪除所有其他訊息,並提供核心日誌條目的即時檢視。

sudo journalctl -k

如何使用journalctl讀取linux系統日誌

突出顯示根據優先順序欄位中的值反映訊息的重要性。

如何使用journalctl讀取linux系統日誌

檢視啟動訊息

如果您有一個與引導相關的問題需要調查,journalctl會為您提供幫助。可能您添加了新硬體,但它沒有響應,或者上次系統升級後,以前工作的硬體元件不再工作。

要檢視與上次引導相關的日誌條目,請使用-b(boot)選項:

journalctl -b

如何使用journalctl讀取linux系統日誌

將為您顯示上次引導的日誌條目。

如何使用journalctl讀取linux系統日誌

當我們說“最後一次啟動”時,我們指的是使您的計算機在當前登入會話中恢復正常的啟動過程。要檢視以前的靴子,您可以使用一個數字來告訴journalctl您感興趣的靴子。要檢視上一次的第三次啟動,請使用以下命令:

journalctl -b 3

如何使用journalctl讀取linux系統日誌

一般來說,如果你遇到了問題,不得不重新啟動你的機器,這是你感興趣的前一個引導序列。所以這是一個常見的命令形式。

如何使用journalctl讀取linux系統日誌

很容易混淆靴子的順序。為了提供幫助,我們可以讓journalctl使用--list boots選項列出它在日誌中記錄的引導。

journalctl --list-boots

如何使用journalctl讀取linux系統日誌

您可以從日期和時間戳中標識要檢視訊息的引導,然後使用左側列中的數字獲取該引導序列的日誌訊息。您還可以選擇32位引導識別符號,並將其傳遞給journalctl。

sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

如何使用journalctl讀取linux系統日誌

檢索並顯示來自我們請求的引導序列的日誌訊息。

如何使用journalctl讀取linux系統日誌

管理日誌硬碟空間

當然,日誌及其所有日誌訊息都儲存在硬碟上。這意味著它們會佔用硬碟空間。要檢視日誌佔用了多少空間,請使用--disk usage選項。

journalctl --disk-usage

如何使用journalctl讀取linux系統日誌

對於今天的硬碟驅動器,152MB的空間並不是很大,但是為了演示的目的,我們還是會將其縮小。我們有兩種辦法。第一種方法是設定一個大小限制,以便將日誌縮減回原來的大小。當然,它會再次生長,但我們現在可以修剪它,為新的生長做好準備。

我們將使用奇妙的標題--vacuum size選項,並傳入希望日誌縮小到的大小。我們要100 MB。考慮到這一點,我們要求journalctl“扔掉所有可以扔掉的東西,但不要低於100MB。”

journalctl --vacuum-size=100M

如何使用journalctl讀取linux系統日誌

另一種修剪日誌大小的方法是使用--vacuum time選項。此選項告訴journalctl放棄比您在命令列上提供的週期早的訊息。您可以在時間段中使用天、周、月和年。

讓我們刪除所有超過一週的郵件:

journalctl --vacuum-time=1weeks

如何使用journalctl讀取linux系統日誌

資料與資訊

資料是沒有用的,除非你能得到它並利用它。然後它就變成有用的資訊。journalctl命令是一個靈活而複雜的工具,允許您以多種方式獲取感興趣的資訊。

您可以使用您需要的日誌訊息中的任何資訊片段。

  • 發表於 2021-04-02 17:06
  • 閱讀 ( 38 )
  • 分類:網際網路

你可能感興趣的文章

如何測試linux pc的效能

...此,這幾乎是獲取定量資料的唯一方法,說明系統的效能如何——如果您的數字不足,這表明您可能希望升級一些PC元件。 ...

  • 發佈於 2021-03-17 09:58
  • 閲讀 ( 50 )

如何解決mac上的藍芽問題

...hpad圖示,然後單擊System Preferences>Bluetooth。 相關:如何將藍芽裝置與電腦、平板電腦或**配對 重新連線藍芽裝置 如果您的裝置未連線到Mac,請關閉藍芽裝置,然後再次開啟以檢視是否重新連線。這也是檢查裝置電池電量...

  • 發佈於 2021-04-02 14:57
  • 閲讀 ( 56 )

如何在linux上使用fold命令

...來重新格式化文字流。它不僅限於處理檔案。讓我們看看journalctl工具的原始輸出是什麼樣子的。f(follow)選項顯示systemd日誌中的最新條目,並在新條目到達時更新。 sudo journalctl -f 輸出環繞在終端視窗的邊緣。 它看起來不太...

  • 發佈於 2021-04-02 16:13
  • 閲讀 ( 41 )

如何在linux上使用tail命令

...個條目來自哪個日誌檔案。 尾巴還是有價值的 儘管現在journalctl提供了對系統日誌檔案的訪問,但tail仍然提供了很多功能。尤其是當它與其他命令結合使用時,透過管道進入或離開尾部。 systemd可能已經改變了環境,但是對於...

  • 發佈於 2021-04-02 17:32
  • 閲讀 ( 40 )

如何在linux上使用free命令

...用。它的輸出可能會讓新手感到困惑,但我們將向您展示如何理解它。 自由命令 free命令在終端視窗中列印記憶體使用情況的快速摘要。它沒有太多的選擇和技巧,也不需要花太多的時間和精力去學習如何使用它。然而,要學...

  • 發佈於 2021-04-02 19:12
  • 閲讀 ( 49 )

如何在linux上使用dmesg命令

...和術語。按less中的正斜槓“/”鍵啟動搜尋功能。 相關:如何在Linux上使用less命令 不再需要sudo 如果希望避免每次使用dmesg時都必須使用sudo,可以使用以下命令。但是,請注意:它允許任何擁有您的計算機使用者帳戶的人使用dme...

  • 發佈於 2021-04-02 21:09
  • 閲讀 ( 58 )

如何在linux上使用mkfs命令

...後才能使用連線到Linux計算機的任何資料儲存裝置。學習如何使用mkfs和其他實用程式來為各種檔案系統實現這一點。我們教你怎麼做。 mkfs**檔案系統 mkfs命令生成檔案系統。在其他作業系統上,建立檔案系統稱為格式化。不管...

  • 發佈於 2021-04-03 02:03
  • 閲讀 ( 49 )

如何在linux上使用最後一個命令

...來實現什麼可以完成使用世界衛生組織的命令。 相關:如何在Linux中確定當前使用者帳戶 lastb命令 lastb命令值得一提。它從名為btmp的日誌中讀取資料。關於這個日誌名,大家有了更多的共識。“b”代表壞,但“tmp”部分仍有爭...

  • 發佈於 2021-04-03 12:45
  • 閲讀 ( 49 )

如何用gedit在linux上圖形化地編輯文字檔案

...重複警告。如果你完全不確定你對系統檔案所做的更改將如何使你的計算機正常工作,就不要進行更改。 當你確實需要編輯一個文字檔案時,不管它是不是一個系統檔案,你會發現gedit是一個快速而簡單的編輯器,它不會讓你陷...

  • 發佈於 2021-04-03 14:21
  • 閲讀 ( 59 )

如何使用macos上的控制檯檢查日誌和活動

macOS中的C***ole應用程式是一個用於除錯訊息和日誌檔案的系統範圍的檢視器。您可以使用它來跟蹤應用程式中的錯誤,或者只是瞭解系統中發生了什麼。 這個應用程式中的大部分內容都不是供普通使用者檢視的,因為它是為更...

  • 發佈於 2021-04-03 18:35
  • 閲讀 ( 28 )
Do131
Do131

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦