当进程fork()s子进程不关闭并重新打开标准IO时,所有子进程共享相同的IO文件描述符。
默认情况下,在systemd单元中运行这样的分叉进程将导致按照预期将任何标准输出写入日志。
在systemd 241 (Debian,Linux4.19)上,这些日志条目有一个_PID字段,与PID字段(父进程进程( systemd启动的进程)相匹配),无论哪个进程实际写入stdout (或stderr)。
然而..。在systemd 247 (Debian,Linux5.9)上,日志_PID条目正确匹配the进程的PID,后者实际上将写入共享的stdout文件描述符。我猜它是通过读取套接字接收逻辑上的一些魔法标志来做到这一点的,这是非常棒的。
我已经阅读了制度变化g,我无法理解这在什么时候发生了变化,以及如何改变,或者是否只是配置不同的东西。
Is --有一种方法可以在系统和Linux内核的日志上匹配_PID标记?
发布于 2021-01-21 02:39:25
在什么时候这种情况发生了改变
在v 243-534-g09d0b46ab6:“日志:刷新stdout流的缓存凭据”
有没有办法在系统和Linux内核的日志上有匹配的
_PID标记?
你可以试着应用那些改变,然后重建。
https://unix.stackexchange.com/questions/630145
复制相似问题