
プロセスfork()
が子プロセスの場合いいえ標準IOを閉じて再度開くと、すべての子が同じIOファイル記述子を共有します。
デフォルトでは、systemdデバイスでこれらの分岐プロセスを実行すると、すべての標準出力が期待どおりにログに記録されます。
systemd 241(Debian Buster、Linux 4.19)では、これらのログエントリには_PID
PIDと一致するフィールドがあります。親実際にstdout(またはstderr)に書き込むプロセス(systemdによって開始されたプロセス)。
ただし... systemd 247(Debian Bullseye、Linux 5.9)では、ログ_PID
エントリはPIDと正しく一致します。実際の執筆プロセス共有stdoutファイル記述子に。私の考えでは、ソケット受信ロジックからいくつかの魔法のフラグを読んでこれを行うようですが、これはかなりクールです。
私はすべて読んだシステム変更ログこれがいつ、どのように変更されたのか、それとも構成が異なるのかを理解できません。
バスターに付属のsystemdの_PIDタグとLinuxカーネルのログを一致させる方法はありますか?
答え1
いつ、どう変わったの?
v243-534-からg09d0b46ab6:「ログ:stdoutストリームのキャッシュされた資格情報フラッシュ」
_PID
Busterに付属のsystemdおよびLinuxカーネルログに一致するラベルを付ける方法はありますか?
変更を適用して再構築してみることができます。