CentOS7のログを確認するならjournalctlコマンドで

CentOS7に限らずですが、サーバーやPCで稼働状況を確認したり、トラブル時の調査などでログを確認する場面があります。

そのようなときに備えて、効率よくログを確認する方法は押さえておきたいところです。

ここでは、CentOS7でjournaldにより収集されたログを操作するためのコマンド「journalctl」の利用例を紹介します。

動作環境

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
CentOS 7.6.1810

journaldにより収集されるログ

CentOS7では、新しく採用されたログ管理の仕組み「journald」により、サービスにより標準出力および標準エラー出力に書き込まれたメッセージ、Syslogメッセージ、カーネルログメッセージなどが収集され、独自のデータベースとして保存されています。

そのため、収集されたログを検索・閲覧する際は、journalctlコマンドを利用します。

参考:第22章 ログファイルの表示と管理 - Red Hat Customer Portal

journalctlコマンドの使用例

journalctlでログを確認する時の利用例をいくつか紹介します。

すべてのログを表示する

オプションなしで実行した場合は、古いログから表示されます。

# journalctl

逆に最新のログから表示したいときは「-r」オプションを付けて実行します。

# journalctl -r

ログの表示が見切れないようにする

journalctlコマンドでは、デフォルトのページャーがlessになっています。そのため、画面に収まりきらない長いログなどは、画面端で見切れてしまいます。

そのようなときは「--no-pager」オプションを付けることで、catによる表示ができ、ログが画面右端で折り返し表示されるようになります。

# journalctl --no-pager

ただ、上のコマンドの場合、ログが一気に流れるので、ログを確認するのは困難です。その場合は、次のようにパイプでlessに渡すことで、ログが見切れることもなく、ページごとの表示ができます。

# journalctl --no-pager | less

最新のログから指定した行数分のみを表示する

最新のログから指定した行数分を表示したいときは「-n」オプションを利用します。下の例では、最新のログを100行分表示します。

# journalctl -n 100

オプションのパラメーターを指定せずに実行した場合は、最新のログが10行分表示されます。

# journalctl -n

最新のログをモニターしたいとき

「tail -f」コマンドのように、最新のログをモニターしたいときは「-f」オプションを利用します。

# journalctl -f

カーネルメッセージのみを表示する

カーネルメッセージのみを表示するには「-k」オプションを利用します。

# journalctl -k

特定サービスのログのみを表示する

特定のサービスに関するログだけを表示したいときは「-u」オプションを利用します。下の例では「sshd」に関するログだけを表示します。

# journalctl -u sshd

特定の重要度以上のログのみを表示する

特定の重要度以上のログのみを表示するときは「-p」オプションを利用します。オプションのパラメーターには、以下の一覧にある文字列、もしくは数値を指定します。

ログの重要度一覧

数値 文字列
emerg 0
alert 1
crit 2
err 3
warning 4
notice 5
info 6
debug 7

下の例では、いずれの場合も、エラー以上のログのみを表示します。

# journalctl -p err
# journalctl -p 3
Memo

「エラー以上のログ」とは、エラーログとエラーより重要なログ(crit, alert, emerg)という意味です。

特定の時間範囲のログのみを表示する

指定した日時以降のログを表示したいときは「-S」オプションを利用し、指定した日時までのログを表示したいときは「-U」オプションを利用します。

なお、日時の指定方法は、いろいろあります。

  • YYYY-MM-DD hh:mm:ss(時刻を省略した場合「00:00:00」とみなされます)
  • now, yesterday, today, tomorrow
  • 1 day ago, 3 hours ago …
  • -1h30min, +30min …

次のように入力すると、2019年2月10日17時以降のログが表示されます。

journalctl -S "2019-02-10 17:00:00"

次のように入力すると、昨日からのログが表示されます。

journalctl -S yesterday

次のように入力すると、2019年2月1日0時15分までのログが表示されます。

journalctl -U "2019-02-01 00:15:00"

次のように入力すると、2019年2月1日0時から2019年2月5日0時までのログが表示されます。

journalctl -S "2019-02-01" -U "2019-02-05"

次のように入力すると、2019年2月11日23時から1時間前までのログが表示されます。

journalctl -S "2019-02-11 23:00" -U "1 hour ago"
journalctl -S "2019-02-11 23:00" -U -1h

起動時からのログを表示する

システム起動時からのログを表示するには「-b」オプションを利用します。

オプションのパラメーターを指定せずに実行した場合は、最新の起動時からのログが表示されます。

# journalctl -b

パラメーターに「1」を指定した場合は、ログに記録されている一番古い起動時からのログが表示されます。

# journalctl -b 1

パラメーターに「-2」を指定した場合は、最新の二つ前の起動時からのログが表示されます。

# journalctl -b -2

あとがき

journalctlコマンドには、ここで紹介した以外にもさまざまなオプションが用意されています。詳しくはmanページを確認してみてください。

おすすめコンテンツ:
トップへ戻る