Является ли systemd-journald реализацией системного журнала?

Здесь будут перечислены все файлы .txt , кроме e.txt :

ls -1 *.txt | grep -v '^e.txt$'

Затем вы можете сделать подстановка команды , чтобы указать rm удалить эти файлы:

rm $(ls -1 *.txt | grep -v '^e.txt$')

23
23.12.2016, 01:19
1 ответ

Что касается протоколов, systemd-journald

  • … является слушателем на сокете потока с именем / run / systemd / journal / stdout . systemd подключает исходные стандартные выходные данные и ошибки служб (которые по умолчанию или явно имеют StandardOutput = journal / StandardError = journal ) к этому сокету. Таким образом, он принимает протокол записей произвольной длины переменной длины, заканчивающихся переводом строки.
  • ... прослушиватель сокетов дейтаграмм с именем / run / systemd / journal / dev-log , который символически связан с / dev / log . Он получает протокол, о котором говорит функция библиотеки syslog () в библиотеке GNU C, связанной с приложениями.
  • … пытается быть клиентом другой службы, прослушивающей сокет дейтаграммы с именем / run / systemd / journal / syslog . Он также получает протокол, о котором говорит функция библиотеки syslog () в библиотеке GNU C (хотя systemd-journald фактически использует другую библиотеку и другую функцию, чтобы озвучивать его).
  • … это программа для чтения с символьного устройства с именем / dev / kmsg . Он получает протокол, о котором говорит ядро ​​Linux, который является протоколом переменной длины, в основном свободного формата, с записями, заканчивающимися переводом строки.
  • ... прослушиватель сокета дейтаграммы с именем / run / systemd / journal / socket .Это аналогично случаю с библиотекой GNU C в том случае, когда приложения связываются с библиотекой, которая сообщает определенный протокол для этого сокета; за исключением того, что это функция sd_journal_sendv () , она находится в библиотеке systemd C, на которую ссылаются приложения, и протокол не стандартизирован, а является протоколом только для systemd, содержащим массив пар ключ = значение, и необязательно читаемый файловый дескриптор в каждой дейтаграмме.

Протокол, используемый функцией syslog () в библиотеке GNU C, не является ни RFC 5424, ни RFC 3164, и фактически является ее собственным стандартом де-факто. Это не RFC 5424, потому что в нем нет правильного количества пробелов и дефисов, обозначающих необязательные поля со значениями NIL. Это не RFC 3164, потому что в нем есть поле PROCID вместо HOSTNAME .

Пару лет назад ваша операционная система systemd имела бы:

  • systemd-journald , выполняющий все вышеперечисленное (и некоторые вещи, которые не имеют отношения к протоколам ). и являясь сервером, с которым общаются библиотеки GNU C и systemd C, используя соответствующие протоколы
  • , вызывается дополнительная программа syslog, rsyslog или syslog-ng, либо xinetd / inetd ] -стайл, когда что-то пытается отправить сообщение в / run / systemd / journal / syslog и получает сокет как дескриптор открытого файла или как прямую службу, настроенную для открытия и прослушивания / run / systemd / journal / syslog с его (эквивалентом rsyslog) imuxsock модулем; и, говоря по протоколу библиотеки GNU C
  • , необязательная служба syslog, rsyslog или syslog-ng или udp-syslog-read, прослушивающая трафик RFC 5426

В настоящее время ваша операционная система systemd имеет:

  • systemd-journald , снова выполняя все вышеперечисленное и являясь сервером, с которым общаются библиотеки GNU C и systemd C
  • , необязательная программа rsyslog, вызываемая как прямая служба, а не через сокет, которая напрямую считывает данные из журнала systemd. файлы, используя его imjournal модуль
  • необязательный syslog или rsyslog или syslog-ng или udp-syslog-read сервис, прослушивающий трафик RFC 5426

Дополнительная литература

43
27.01.2020, 19:41

Теги

Похожие вопросы