このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】コマンドの出力をログに記録する:systemd-catコマンド
systemd-catコマンドの概要
systemd-cat
コマンドは、指定されたコマンドの出力をsystemd-journald
によって管理されるジャーナルログに記録するためのツールです。このコマンドを使用することで、スクリプトやコマンドの出力を簡単にシステムログに記録することができます。
【構文】systemd-cat コマンド
loggerコマンドとsystemd-catコマンドの違い
特徴 | loggerコマンド | systemd-catコマンド |
---|---|---|
使用目的 | 任意のメッセージをシステムログに追加する。 | コマンドの出力をシステムログに記録する。 |
基本構文 | logger [オプション] メッセージ | systemd-cat コマンド |
使い方の柔軟性 | 手動でメッセージを入力する必要がある。 | コマンドの出力をそのままログに記録する。 |
主な使用例 | スクリプトや手動で特定のメッセージをログに記録する。 | スクリプトやコマンドの出力を自動的にログに記録する。 |
設定可能なオプション | ファシリティ、プライオリティ、タグなど | 少ない(デフォルト設定で動作) |
出力の扱い | メッセージ単位で扱う。 | コマンドの標準出力および標準エラー出力全体を扱う。 |
コマンドの使用例と解説と確認方法
1.コマンドの出力をログに記録する。
・「systemd-cat echo "This is a test message."
」コマンドを実行します。
echo
コマンドの出力をsystemd-journald
に記録します。
user01@ubuntu-vm:~$ systemd-cat echo "This is a test message."
【確認方法】
・「journalctl -e
」コマンドを実行します。
ログファイルの最後に移動して表示します。
user01@ubuntu-vm:~$ journalctl -e
(省略)
7月 22 00:13:52 ubuntu-vm pkexec[15551]: pam_unix(polkit-1:session): sessi>
7月 22 00:13:52 ubuntu-vm pkexec[15551]: user01: Executing command [USER=r>
7月 22 00:13:52 ubuntu-vm update-notifier.desktop[15557]: /var/cache/apt/a>
7月 22 00:13:58 ubuntu-vm echo[15874]: This is a test message.
・「q」キーを押して終了させます。
2.スクリプトの出力をログに記録する。
・「systemd-cat bash -c 'for i in {1..5}; do echo "Logging $i"; sleep 1; done'
」コマンドを実行します。
スクリプトの出力(カウントとログメッセージ)をsystemd-journald
に記録します。
user01@ubuntu-vm:~$ systemd-cat bash -c 'for i in {1..5}; do echo "Logging $i"; sleep 1; done'
【確認方法】
・「journalctl -e
」コマンドを実行します。
ログファイルの最後に移動して表示します。
user01@ubuntu-vm:~$ journalctl -e
(省略)
7月 22 00:17:14 ubuntu-vm bash[29175]: Logging 1
7月 22 00:17:15 ubuntu-vm systemd[1]: Starting Cleanup of Temporary Direct>
7月 22 00:17:15 ubuntu-vm systemd[1]: systemd-tmpfiles-clean.service: Deac>
7月 22 00:17:15 ubuntu-vm systemd[1]: Finished Cleanup of Temporary Direct>
7月 22 00:17:15 ubuntu-vm bash[29175]: Logging 2
7月 22 00:17:16 ubuntu-vm bash[29175]: Logging 3
7月 22 00:17:17 ubuntu-vm bash[29175]: Logging 4
7月 22 00:17:18 ubuntu-vm bash[29175]: Logging 5
(省略)
・「q」キーを押して終了させます。
3.エラーメッセージをログに記録する。
・「systemd-cat ls /nonexistent
」コマンドを実行します。
存在しないディレクトリをリストしようとするls
コマンドのエラーメッセージをsystemd-journald
に記録します。
user01@ubuntu-vm:~$ systemd-cat ls /nonexisten
【確認方法】
・「journalctl -e
」コマンドを実行します。
ログファイルの最後に移動して表示します。
user01@ubuntu-vm:~$ journalctl -e
(省略)
7月 22 00:19:15 ubuntu-vm dbus-daemon[498]: Unknown group "power" in message bus configuration file
7月 22 00:19:15 ubuntu-vm dbus-daemon[498]: [system] Reloaded configuration
7月 22 00:19:18 ubuntu-vm ls[35615]: ls: '/nonexistent' にアクセスできません: そのようなファイルやディレクトリはありません
(省略)
・「q」キーを押して終了させます。
まとめ
systemd-cat
コマンドは、コマンドやスクリプトの出力をsystemd-journald
によって管理されるログに記録するための便利なツールです。logger
コマンドとの違いは、systemd-cat
がコマンドの出力全体をログに記録するのに対し、logger
は任意のメッセージを手動でログに追加する点です。systemd-cat
を使用することで、ログ管理が容易になり、スクリプトのデバッグや監視が効果的に行えます。