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 커널 로그에 일치하는 레이블을 지정할 수 있는 방법이 있습니까 ?

변경 사항을 적용하고 다시 빌드해 볼 수 있습니다.

관련 정보