ログを表示するために使用できるVPNサービスデバイスがあります。
journalctl -u vpn
VPNと手動で対話して記録するスクリプトもあります。
exec > >(systemd-cat -t vpn.sh) 2>&1
以下を使用してログを表示できます。
journalctl -t vpn.sh
私は両方のログを見ようとしました。
journalctl -u vpn -t vpn.sh
しかし、それはうまくいきませんでした。
両方のログを同時に表示する方法はありますか?または、スクリプトの識別子()-t vpn.sh
と一致するようにVPNサービス単位ファイルの識別子()を設定できますか?vpn.sh
答え1
要約:次のように動作します。
$ journalctl _SYSTEMD_UNIT=vpn.service + SYSLOG_IDENTIFIER=vpn.sh
+
2つの結合セットを結合し、2つの式のいずれかに一致するログ行を見つけることができます。 (この内容はJournalctlのマニュアルページに記載されています。)
-u
これを行うには、正しいフィールド名(フラグと-t
ショートカット)で参照する必要があります。
あなたは見ることができますsystemd.journal-フィールド(5)フィールド名のドキュメントです。 (該当ページには、1つは下線で始まり、もう1つはない理由も説明されています。)
_SYSTEMD_UNIT
サフィックスを含む正確に一致する項目が必要なためです.service
(-u
ショートカットはスマートで、フィールド固有のクエリに変換するときに正確な単位名を探します)。
それらを組み合わせると、上記のコマンドを取得できます。
答え2
投稿したい代替ソリューションを見つけました。一部の人はそれが役に立つと思います。私のスクリプトの識別子と一致するように、ユニットファイルでSyslogIdentifier
以下を設定できます。[Service]
だから
[Unit]
Description=vpn management service
[Service]
SyslogIdentifier=vpn.sh
Type=simple
ExecStart=/bin/bash /home/myusername/scripts/vpn.sh
したがって、スクリプトを手動で呼び出すと、識別子はvpn.shに設定されている識別子と一致します。スクリプトの上部には次のように設定されています。
exec > >(systemd-cat -t vpn.sh) 2>&1
ここで vpn.sh を呼び出し、vpn.sh を手動で呼び出す systemd のログを見てみましょう。
journalctl -t vpn.sh --since today
または
journalctl SYSLOG_IDENTIFIER=vpn.sh --since today
答え3
サービス名も識別子として使用できるようです。以下のクーマンが私にとって効果的です。
journalctl -t vpn -t vpn.sh
-t、--identifier = SYSLOG_IDENTIFIER指定されたシステムログ識別子SYSLOG_IDENTIFIERを使用してメッセージを表示します。
This parameter can be specified multiple times.