Linux
如何在 systemd 日誌中為共享標準輸出文件描述符的程序提供 PID?
當一個程序
fork()
的子程序沒有關閉和重新打開標準 IO 時,所有子程序共享相同的 IO 文件描述符。預設情況下,在 systemd 單元中執行這樣的分叉程序將導致任何標準輸出被寫入日誌,正如預期的那樣。
在 systemd 241(Debian buster,Linux 4.19)上,這些日誌條目的
_PID
欄位與父程序(systemd 啟動的那個)的 PID 匹配,無論哪個程序實際寫入 stdout(或 stderr)。然而……在systemd 247(Debian Bullseye,Linux 5.9)上,日誌條目正確匹配實際寫入共享標準輸出文件描述符的程序
_PID
的PID 。我猜它是通過讀取套接字接收邏輯上的一些魔術標誌來做到這一點的,這太棒了。我已經閱讀了 systemd 更改日誌,但我不明白這在什麼時候發生了變化以及如何變化,或者是否只是配置不同。
有沒有辦法在 buster 附帶的 systemd 和 Linux 核心的日誌上匹配 _PID 標籤?
在什麼時候發生了變化以及如何
在 v243-534- g09d0b46ab6:“期刊:刷新標準輸出流的記憶體憑據”
有沒有辦法在
_PID
buster 附帶的 systemd 和 Linux 核心的日誌上匹配標籤?您可以嘗試僅應用該更改並進行重建。