はじめに
Systemd は、カーネルおよびシステム プロセスからのすべての Linux メッセージをログに記録します。 journalctl コマンドを使用すると、systemd ログの表示と編集が可能になり、サービスとプロセスのデバッグのための強力なツールになります。
このガイドでは、例を通して、journalctl を使用して systemd ログを読み取り、制御、維持する方法を示します。

前提条件
- コマンドライン/ターミナル ウィンドウへのアクセス
- 構成ファイルを編集するためのテキスト エディター (nano など)。
- sudo 権限を持つユーザー (ユーザーを sudoers に追加する方法を参照してください)。
Systemd とは
Systemd は、Linux サービスおよびシステム マネージャーです。ユーザーが systemd を直接呼び出すことはありませんが、マネージャーには、さまざまなシステム プロセスに対して個別に実行するための多くのツールとデーモンが含まれています。
systemd の最も強力な機能の 1 つは、ログ機能です。 Systemd は、ジャーナルと呼ばれるログを通じてすべてのカーネルとユーザー プロセスを記録するための集中型ソリューションを提供します。 .
日誌 デーモンは、システムが出力するすべてのメッセージを収集し、プログラムまたはプロセスに関係なく、ジャーナルを作成します。デーモンは、利用可能なすべてのシステム リソースからデータを収集し、バイナリ形式で保存します。
注: バイナリ形式により、ニーズに合わせて出力を操作できるため、従来の Linux ログ ファイルよりも柔軟性が高くなります。
journalctl 構文
journalctl
コマンドは、journald によって収集されたジャーナル データをクエリして操作します デーモン。このツールはシステム管理者にとって不可欠であり、他の Linux ロギング ツールや Syslog サーバー ソフトウェア ソリューションを補完します。
コマンド構文は次のとおりです:
journalctl <options> <matches>
パラメータがなければ、journalctl
コマンドは、最も古いエントリから始まるジャーナルの内容全体を出力します。 <match>
出力フィールドをフィルタリングするための、スペースで区切られた 1 つ以上の引数です。フォーマットは "FIELD=VALUE"
です .
journalctl オプション
以下の表は、一般的な journalctl
をまとめたものです。 オプション:
オプション | 説明 |
---|---|
-a --all | 印刷できない文字を含め、すべてのフィールドを完全に表示します。 |
-f --follow | 最新のエントリを表示し、新しいエントリを継続的に印刷します。 |
--no-full | 出力を切り捨てます。 |
-e --pager-end | ページャーの末尾にジャンプします。 |
-n <number> --lines=<number> | 最新のエントリを <number> に限定して表示します イベントの。引数がない場合、デフォルトは 10 です。 |
-o <format> --output=<format> | 要求された <format> の仕訳を表示します . |
--utc | 協定世界時 (UTC) 形式で時刻を表示します。 |
-x --catalog | 利用可能な場合、ログ メッセージに説明テキストを追加します。 |
-q --quiet | 出力で情報メッセージを抑制します。 |
-b [<ID> or <+-offset>] --boot[=<ID> or <+-offset>] | 特定のブートからのログを表示します。引数を省略すると、現在のブート ログが表示されます。 |
-k --dmesg | カーネル メッセージのみを表示します。 |
--list-boots | ブート番号とその ID の表を表示します。 |
-g <regex> --grep=<regex> | grep 正規表現構文に従って出力をフィルタリングします。 |
-S <date> 、-U <date> --since=<date> , --until=<date> | 指定した日付より新しいまたは古いエントリを表示します。 |
-u <unit|pattern> --unit=<unit|pattern> | 指定された systemd ユニットまたは <pattern> に一致する任意のユニットのログを表示します . |
--disk-usage | ディスク上の合計ジャーナル サイズを計算して表示します。 |
--vaccuum-size=<size> | アーカイブされたジャーナル ファイルのサイズを |
--vaccuum-time=<time> | アーカイブされた日誌を |
--no-pager | ページャーを無効にし、標準出力として表示します。 |
journalctl
を確認してください オプションの完全なリストについては、man コマンドを使用してマニュアル ページを参照してください。
systemd の読み方
次のセクションでは、systemd ログを読み取り、journalctl
のさまざまな表示オプションを使用する方法について概説します。 指図。すべてのシステムのレコードは一意であるため、出力はマシンごとに異なります。
すべての日誌エントリを表示
すべての日誌エントリを表示するには、journalctl
を使用します オプションなしのコマンド:
journalctl

出力の最初の行は、ログ データの時間範囲を示しています。列には、左から右の順に次のデータが含まれます:
- 日時。
- ホスト
- ログソース。
- ログ メッセージ。
ジャーナル データには多くのエントリが含まれています。 矢印キーを使用します (less コマンドに似ています) 移動します。
q を押してジャーナルを終了します .
最新のエントリを表示
journalctl
コマンドは、デフォルトで最も古いエントリを表示します。ページャーの最後にジャンプして最新のエントリを表示するには、-e
を使用します オプション:
journalctl -e

スペースを節約するために、出力には最後の 1000 エントリが表示されます。
出力に表示される行数を制御するには、-n
を使用します オプションの後に行数を指定します。たとえば、最新の日誌エントリを 5 つ表示するには、次を使用します。
journalctl -n 5

-e
オプションは不要であり、-n
によって暗示されています オプション。数字を省略すると、デフォルトで最新の 10 件のエントリが表示されます。
ログを特定のブートに限定する
ログを現在のブートに限定するには、-b
を使用します パラメータなしのタグ:
journalctl -b

パラメーターを指定しないと、コマンドは現在のブート ログを表示します。
オフセット パラメータを追加して、特定のブートにジャンプします。たとえば、以前の起動ログを次のように表示します:
journalctl -b -1

または、利用可能な最も古いブート ログを次のように表示します:
journalctl -b +1

特定のブートを確認する別の方法は、ブート ID を使用することです。 --list-boots
を使用してブート ID を取得します と:
journalctl --list-boots

最初の列には負のオフセット番号が表示され、2 番目の列には ブート ID が取得されます . ID をコピーし、パラメーターとしてコマンドに追加します。例:
journalctl -b cc07702b00884ec59312ece62604cac8

出力は、ログ表示を提供された ID インスタンスに制限します。
特定の時間枠内のログを表示
制限時間を指定してジャーナルをフィルタリングします。指定された時間以降または指定された時間まで制限するための 2 つのオプションは次のとおりです。
journalctl -S <datetime>
journalctl -U <datetime>
オプションを個別に使用するか、それらを組み合わせて時間枠を作成します。
このコマンドは、次の日付と時刻の形式のいずれかを想定しています:
- 特定の日付と時刻。例:
2022-04-30 09:20:00
. time パラメータを省略すると、デフォルトは00:00:00
になります . "yesterday"
などの文字列 ,"today"
,"2 hours ago"
、または"now"
.
以下は journalctl
の例です 特定の時間枠を持つコマンド:
journalctl -S 2022-04-02 -U 2022-04-22

このコマンドは、2022 年 4 月 2 日から 2022 年 4 月 22 日までの時間枠を作成します。出力には、その時間枠に該当するジャーナルが表示されます。
または、次のような文字列パターンを使用します:
journalctl -S "50 minutes ago"

出力には、指定された時刻から現在の時刻までのログが表示されます。
特定の systemd ユニットごとにログを表示
-u
を使用して、特定の systemd ユニットでログをフィルタリングします タグとユニット名を提供します。たとえば、Jenkins サービス ユニット レコードのみをフィルタリングするには、次を実行します。
journalctl -u jenkins

出力には、特定の systemd ユニット (この場合は Jenkins) に関連するジャーナル エントリが表示されます。
注: 現在アクティブなすべての systemd ユニットを表示するには、次を使用します:
systemctl list-units
カーネル メッセージを表示する
カーネル ジャーナル ログ メッセージのみを表示するには、-k
を使用します。 オプション:
journalctl -k

出力には、-b
を適用して、現在のブートからのカーネル メッセージのみが表示されます。 鬼ごっこ。別のブート セッションからのカーネル ログを見つけるには、-b
を追加します。 タグを付けて特定のブーツを検索します。
ログをフォロー
-f
を使用します または --follow
最新のログを継続的に出力するためのタグ:
journalctl -f

出力には、リアルタイムで生成されるログが出力されます。このオプションにより、journalctl
でログを監視できます 彼らが追加するように。
ビューアを終了するには、CTRL を押します +C .
優先度に基づいてログ メッセージをフィルタリングする
次のコマンドを使用して、ログ メッセージを優先度でフィルター処理します:
journalctl -p <number or text priority>
次の優先順位があります:
- 緊急 -
0
またはemerg
- アラート -
1
またはalert
- クリティカル -
2
またはcrit
- エラー -
3
またはerr
- 警告 -
4
またはwarning
- お知らせ -
5
またはnotice
- 通知 -
6
またはinfo
- デバッグ -
7
またはdebug
数字が小さいほど、優先度が最も高いメッセージを示します。単一レベルの優先度を指定すると、優先度の低い (より重要な) ログもすべて表示されます。
たとえば、アラートを表示するには、次を使用します:
journalctl -p 1
または代わりに:
journalctl -p alert

出力には、アラート レベルのメッセージと、より重要なメッセージ (存在する場合) のみが表示されます。
特定のユーザーに基づいてログ メッセージをフィルタリングする
ユーザーのログを表示するには、ユーザー ID (UID) を取得します:
id <user>

現在のユーザーの ID を取得するには、<user>
を省略します .出力には、特定のユーザーの UID 値が表示されます。 UID ジャーナル フィールドを使用して、特定のユーザーに基づいてログ メッセージをフィルタリングします。
journalctl _UID=<UID>

出力は、指定されたユーザー ID に基づいてジャーナル ログをフィルター処理します。
注: フィールドの完全なリストについては、systemd.journal-fields
を確認してください マニュアルページ:
man systemd.journal-fields
systemd ログ出力を編集する方法
システム管理者としてログを操作する際の重要な側面は、ログ出力のフォーマットです。 Systemd は、視覚的な結果を操作し、目的の形式でデータをフェッチするための多くの方法を提供します。
以下は、いくつかの標準出力編集オプションと例です。
標準出力への出力
journalctl
コマンドは、ページャーを使用して出力を表示します。ページャーを無効にします:
journalctl --no-pager
結果の出力は標準出力 (stdout) にあります。テキスト編集ツールまたは Bash スクリプトを使用してログ データを解析するときに、このオプションを使用します。
出力の切り捨てまたは拡張
journalctl
pager は、出力に展開されたジャーナル イベントを示します。 右を押す 左矢印キー 画面サイズに収まらないテキストをナビゲートするのに役立ちます。
journalctl
の切り捨てを制限するには 出力、--no-full
を使用 オプション:
journalctl --no-full

出力は、行を画面サイズに制限し、省略記号 (...
) は、切り捨てられた表示を示します。
出力形式
journalctl
コマンドは、出力形式のさまざまなオプションを提供します。出力形式の構文は次のとおりです:
journalctl -o <output format>
利用可能なフォーマットには次のものがあります:
cat
- メッセージ フィールドのみを表示します。export
- バックアップに適したバイナリ形式を出力します。short
- 従来の Syslog ファイルと同様の出力を生成します。short-precise
- 時間をマイクロ秒で表示します。json
- 日誌エントリを単一行の JSON エントリにフォーマットします。json-pretty
- 複数行の JSON 構造にフォーマットします。
たとえば、json-pretty
を使用して表示するには フォーマット、使用:
journalctl -o json-pretty

さまざまな形式により、ログ データをデータベースやスクリプト ファイルで使用したり、監視ソフトウェアで解析したりできます。
ログのメンテナンス
ログ データの保存にはコストがかかり、スペースを占有します。以下は、ディスクの使用状況を検出し、ログ データ ファイルを維持し、古いログ ファイルが使用していたスペースを解放するためのヒントとコツです。
ディスク使用量の表示
ジャーナル ディスクの使用状況を確認するには、次のコマンドを実行します:
journalctl --disk-usage

出力には、アーカイブ済みおよびアクティブなジャーナルによるディスクの総占有スペースが表示されます。
古いログを削除
必要なサイズ制限を設定して、古いログ アーカイブを削除します。このコマンドでは、ファイル /var/log/journal を削除するために sudo が必要です .
たとえば、サイズを 1M に設定するには:
sudo journalctl --vacuum-size=1M

sudo パスワードを入力して Enter を押します .出力にはファイル名とサイズが表示され、最後の行には解放されたメモリの量が表示されます。
または、時間に基づいてアーカイブ ログを削除します。設定された時間より古いファイルはすべて削除され、メモリが解放されます。たとえば、2 か月以上経過したファイルを削除するには、次のコマンドを実行します:
sudo journalctl --vacuum-time=2months
時間サフィックスは s
です 、m
、h
, days
, months
、weeks
、または years
.
ジャーナルを制限する
ジャーナル構成ファイルを使用すると、制限を設定し、journald データがディスク上で占める量を制御できます。ファイルを編集するには、次を実行します:
sudo nano /etc/systemd/journald.conf
このファイルには、構成フィールドの例が含まれています。次のパラメータは、ジャーナルのサイズとメモリの制限を扱います:
SystemMaxUse
- ジャーナルが使用する最大永続ストレージSystemKeepFree
- エントリを永続ストレージに追加するときにジャーナルが残す空き容量SystemMaxFileSize
- 永続ストレージ内のジャーナル ファイルの最大サイズを設定します。RuntimeMaxUse
- 揮発性ストレージの最大ディスク容量RuntimeKeepFree
- 揮発性ストレージへの書き込み時に他の用途に使用できる空き容量RuntimeMaxFileSize
- 揮発性ストレージ内のジャーナル ファイルの最大サイズを設定します。
ファイル サイズは、対象のアーカイブ ファイルが制限に達するように制御します。行のコメントを外し、制限を設定して、マシンのストレージと消費リソースをより適切に制御します。
結論
このガイドでは、systemd ジャーナル ログを表示、制御、および管理する方法を例を通して示しました。 journalctl
コマンドは、Linux サービスのトラブルシューティングとシステム エラーの発見に役立つ貴重なツールです。