Linux journalctl コマンド
journalctl とは?
journalctl は、Linux システムで systemd のログを照会・表示するための強力なツールです。systemd エコシステムの一部として、集中化されたログ管理機能を提供し、従来の syslog サービスを置き換えます。
主な特徴
- バイナリログ保存:ログをバイナリ形式で保存し、検索効率を向上させます
- 構造化ログ:メタデータや構造化されたログフィールドの追加をサポート
- リアルタイム監視:ログの変化をリアルタイムで追跡できます
- 多彩なフィルタ方法:時間、サービス、優先度など、さまざまな条件でフィルタリングをサポート
基本構文
journalctl の基本的なコマンド形式は次のとおりです:
journalctl [选项] [匹配条件...]
よく使うオプション一覧
| オプション | 説明 |
|---|---|
-b |
今回の起動のログを表示 |
-f |
ログを追跡(tail -f と同様) |
-k |
カーネルメッセージのみ表示 |
-u |
指定したユニットのログを表示 |
-n |
直近の n 件のログを表示 |
--since |
指定した時間以降のログを表示 |
--until |
指定した時間以前のログを表示 |
よく使う操作例
1. 完全なシステムログを表示
例
journalctl
2. 今回の起動のログを表示
例
journalctl -b
3. 新しいログをリアルタイムで監視
例
journalctl -f
4. 特定のサービスのログを表示
例
journalctl -u nginx.service
5. 時間範囲で検索
例
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"
6. エラーレベルのログを表示
例
journalctl -p err
ログの優先度フィルタ
journalctl はログの優先度によるフィルタリングをサポートしています。優先度の定義は次のとおりです:
| 優先度 | 数値 | 説明 |
|---|---|---|
| emerg | 0 | 緊急 |
| alert | 1 | 即時の対応が必要 |
| crit | 2 | 重大なエラー |
| err | 3 | 一般的なエラー |
| warning | 4 | 警告 |
| notice | 5 | 注意が必要な状況 |
| info | 6 | 一般的な情報 |
| debug | 7 | デバッグ情報 |
使用例:
例
# エラー以上のレベルのログを表示
journalctl -p err
# 警告以上のレベルのログを表示
journalctl -p warning
journalctl -p err
# 警告以上のレベルのログを表示
journalctl -p warning
上級者向けの使い方
1. ログが使用しているディスク容量を表示
例
journalctl --disk-usage
2. 古いログを削除
例
# 直近2日分のログを保持
journalctl --vacuum-time=2d
# ログの最大使用量を500MBに制限
journalctl --vacuum-size=500M
journalctl --vacuum-time=2d
# ログの最大使用量を500MBに制限
journalctl --vacuum-size=500M
3. JSON形式で出力
例
journalctl -o json
4. 完全なフィールド情報を表示
例
journalctl -o verbose
5. 特定のフィールドでフィルタ
例
# 特定のプロセスIDのログを表示
journalctl _PID=1234
# 特定のユーザーのログを表示
journalctl _UID=1000
journalctl _PID=1234
# 特定のユーザーのログを表示
journalctl _UID=1000
実用的なテクニック
1. 組み合わせ検索
例
# nginxサービスの昨日以降のエラーログを検索
journalctl -u nginx.service --since yesterday -p err
journalctl -u nginx.service --since yesterday -p err
2. ページング表示
例
journalctl | less
3. ログをファイルにエクスポート
例
journalctl --since "2023-01-01" > journal.log
4. カーネルリングバッファのメッセージを表示
例
journalctl -k
5. システム起動プロセスのログを表示
例
journalctl -b0 | grep "Starting"
よくある問題の解決
問題1:ログが完全に表示されない
解決策:
例
# 出力行数の制限を増やす
journalctl --no-pager
journalctl --no-pager
問題2:ローテーションされた古いログを表示するには?
解決策:
例
# すべてのログを表示(アーカイブ済みを含む)
journalctl -a
journalctl -a
問題3:特定の時点のログを表示するには?
解決策:
例
# 秒単位の正確な時間検索
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
まとめのフローチャート

Linux コマンド大全