EUID, EGID и PID исходного клиентского процесса, который подключился к потоковому сокету AF_LOCAL
в /run/systemd/journal/stdout
, доступны из ядра через параметр сокета SO_PEERCRED
, , который он использует . UCSPI -Инструменты UNIX получают ту же информацию с помощью одного и того же системного вызова.
Дочерние сервисные процессы, конечно, наследуют свои стандартные файловые дескрипторы ввода-вывода, уже открытые (, если только родительский сервисный процесс не изменит это, конечно ), и поэтому systemd-journald
все выходные данные журнала имеют учетные данные исходного родительский процесс.
Выходные данные журнала, созданные через сокет AF_LOCAL
в /run/systemd/journal/socket
, говорят о том, что идиосинкразический протокол systemd-journald
поступает через сокет дейтаграммы, а не через поток. Этот сокет помечен с помощью параметра сокета SO_PASSCRED
, чтобы ядро записывало одну и ту же информацию в каждую отправленную дейтаграмму, которая извлекается из каждой дейтаграммы с помощью systemd-journald
.
getsockopt()
. Руководство Linux-программиста . 2017 -09 -15. socket
. Руководство Linux-программиста . 2018 -02 -02. local-stream-socket-accept
. Направляющая ноша . Программное обеспечение. Как объяснил @cas, чтобы сохранить форматирование при отправке вывода sdiff
в файл, включите-t
sdiff -t -w 185 fileone filetwo > filethree
Чтобы управлять табуляцией, включите --tabsize
вместе с количеством пробелов
sdiff -t --tabsize 2 -w 185 fileone filetwo > filethree