systemdログで標準出力ファイル記述子を共有するプロセスのPIDをどのように取得できますか?

systemdログで標準出力ファイル記述子を共有するプロセスのPIDをどのように取得できますか?

プロセスfork()が子プロセスの場合いいえ標準IOを閉じて再度開くと、すべての子が同じIOファイル記述子を共有します。

デフォルトでは、systemdデバイスでこれらの分岐プロセスを実行すると、すべての標準出力が期待どおりにログに記録されます。

systemd 241(Debian Buster、Linux 4.19)では、これらのログエントリには_PIDPIDと一致するフィールドがあります。実際にstdout(またはstderr)に書き込むプロセス(systemdによって開始されたプロセス)。

ただし... systemd 247(Debian Bullseye、Linux 5.9)では、ログ_PIDエントリはPIDと正しく一致します。実際の執筆プロセス共有stdoutファイル記述子に。私の考えでは、ソケット受信ロジックからいくつかの魔法のフラグを読んでこれを行うようですが、これはかなりクールです。

私はすべて読んだシステム変更ログこれがいつ、どのように変更されたのか、それとも構成が異なるのかを理解できません。

バスターに付属のsystemdの_PIDタグとLinuxカーネルのログを一致させる方法はありますか?

答え1

いつ、どう変わったの?

v243-534-からg09d0b46ab6:「ログ:stdoutストリームのキャッシュされた資格情報フラッシュ」

_PIDBusterに付属のsystemdおよびLinuxカーネルログに一致するラベルを付ける方法はありますか?

変更を適用して再構築してみることができます。

関連情報