着信および発信するテンプレート単位(つまり、ソケット起動単位)のシステムログをどのように追跡しますか?

着信および発信するテンプレート単位(つまり、ソケット起動単位)のシステムログをどのように追跡しますか?

inetdシステムソケットユニットとそれに付随するサービスユニット(たとえば、および)として配布されたスタイルmy-service.socketサービスAccept=trueがあります[email protected]

新しい接続が受信されるたびに、systemdは次のようなテンプレート名を持つサービスインスタンスを作成します[email protected]:9418-198.51.100.56:55346.service

my-service次のコマンドを使用して生成されたすべてのログを表示できますjournalctl -u 'my-service@*'。新しく作成されたログをリアルタイムで追跡したいのですが、マニュアルページに記載されているjournalctl -fu 'my-service@*'とおりに機能しません。journalctl

パターンを指定すると、ログ内のデバイス名のリストが指定されたパターンと比較され、一致するものが使用されます。

したがって、journalctlすでに実行されているインスタンスのみが追跡され、後で起動されるインスタンスは追跡されません。

[email protected]ログ追跡を開始してから起動したインスタンスを含む、すべてのインスタンスのすべてのログ出力を追跡する方法はありますか?

答え1

あなたは試すことができます:

watch journalctl -eu 'my-service@*'
  • 「2秒ごとに」他のアップデートが必要な場合は、-n監視オプションを使用できます。
  • このeオプションを使用すると、常に最後の項目が表示されます。以下を参照してくださいman journalctl

    -e, --pager-end は、暗黙的な
    ページングツール内からログの終わりにすぐに移動します。
    つまり、-n1000 は、ページャが無限サイズのログをバッファリングしないことを保証します。
    これは明示的な-nによって他の値に置き換えることができ、-nallはこの制限を無効にします。
    このオプションはless(1)ページャのみをサポートします。


すべてのセルに別々の共通フラグメントを使用する場合、他の可能性はセルフラグメントを選択することです。

-u, --unit=UNIT|PATTERN
...
指定された UNIT が systemd.slice(5) ユニットの場合、そのスライスの子エントリのすべてのログが表示されるように、「_SYSTEMD_SLICE=UNIT」の一致も追加します。

答え2

私も同じ問題を抱えていましたが、あなたの質問を読んで答えを見つけました。

# journalctl -f -u my-service@\*.service

質問ありがとうございます。私は直接答えを得た=)

関連情報