Рейтинг:4

Что происходит с журналами, созданными регистратором, если демон ведения журнала не установлен или не активен

флаг in
Dom

Если у вас есть дистрибутив Linux без установленного демона ведения журнала или с отключенным демоном ведения журнала, что происходит с журналами, созданными регистратор команда?

У меня Ubuntu 20.04.2 со службой rsyslog. Когда я отключу эту службу, я все равно смогу использовать регистратор ничего не записывается в системный журнал, но команда по-прежнему принимает мой ввод и имеет нулевой код выхода.

Когда нет службы ведения журналов, что происходит с журналами, созданными регистратор?

Как может регистратор команда работает без куда-то отправлять логи? Почему регистратор выйти успешно, если нечем было получать логи?

Рейтинг:6
флаг fr

'logger' отправляет данные в сокет Unix /dev/журнал. (Это сокет, несмотря на то, что он находится в /dev.)

В большинстве дистрибутивов Linux этот сокет нет больше не принадлежит традиционному демону syslog — его другой конец на самом деле не идет напрямую к rsyslog. Скорее всего, сокет /dev/log принадлежит systemd-журнал служба, которая все еще работает и получает сообщения.

# fuser -v /dev/журнал
                                 КОМАНДА ДОСТУПА ПИД-ИД ПОЛЬЗОВАТЕЛЯ
/run/systemd/journal/dev-log: root 1 F.... systemd
                                 корень 304 F.... systemd-журнал

(Обратите внимание, что init также содержит сокет — если journald остановлен, но в сокете есть какая-то активность, init автоматически снова запустит службу… во многом так же, как inetd в прошлом делал для служб TCP.)

Systemd-journald хранит журналы в /var/log/journal, которые вы можете прочитать с помощью журналctl -f вместо обычного 'tail -f' (они в индексированном двоичном формате). Обычно сообщения через /dev/log продолжают записываться туда, даже если rsyslogd не работает.

$ регистратор привет

$ журналctl -n 1
12 июля 18:12:26 ember root[951422]: Привет

В таких системах пакеты rsyslogd и syslog-ng получают только переданный сообщения из systemd-journald, а не напрямую из программ.Они работают либо путем прослушивания другого сокета (внутри /run/systemd), на который journald пересылает все сообщения, либо путем прямого чтения двоичных файлов журнала из /var/log/journal.

(Обычно предпочтительнее прямой доступ к файлу .journal, поскольку он позволяет rsyslogd собирать дополнительные поля, включенные программами, которые в противном случае были бы потеряны при использовании пересылки сообщений на основе сокетов.)

Если вы укажете «logger» на сокет Unix, который не принимает сообщения, он фактически покажет сообщение об ошибке, как и должно:

$ python -c "из импорта сокета *; socket(AF_UNIX, SOCK_DGRAM).bind('/tmp/log')"

$ logger -u /tmp/log Здравствуйте!
регистратор: сокет /tmp/log: соединение отклонено

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.