/dev/log отсутствует. как я фиксирую?

На моей машине (16.04.1) кажется, что/dev/log отсутствует. Это, вероятно, всегда отсутствовало.

Настоящая причина, к которой я здесь обращаюсь за помощью, - то, что я использую virtualmin с csf и SYSLOG_CHECK опция всегда перестала работать (даже когда ОС была все еще 14,04 надежными людьми).

Это - то, что происходит, когда я выполняю регистратор:

# logger hi there
logger: socket /dev/log: No such file or directory

Я также попробовал 'Python' способ сделать вещи согласно этому вопросу:

# python -c 'import syslog; syslog.syslog("Hello World")'
(nothing is outputted, or appears in syslog)

Так, взгляд на /dev/ папка я замечаю, что нет никакого 'журнала' там вообще.

Я проверил другую машину (v14.04), и она имеет его: srw-rw-rw- 1 root root 0 Dec 16 20:34 log=

Основные отличия между этими двумя машинами - то, что первый был запущенным экземпляром из vultr.com (использующий облачную-init осведомленную установку, которую они предоставили), по сравнению с последней машиной (который работает), который использовал ubuntu ISO (давным-давно).

Так, к вопросу: Как я иду об устранении проблемы того, почему у меня нет a /dev/log подайте ту некоторую заявку (csf), вероятно, пытается записать в? Примечание там является другими сообщениями, появляющимися в /var/log/syslog, таким образом, это - все немного путающее мне.

Любая справка ценится.

Править:

Содержание/lib/systemd/system/systemd-journald-dev-log.socket:

[Unit]
Description=Journal Socket (/dev/log)
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Before=sockets.target

IgnoreOnIsolate=yes

[Socket]  
Service=systemd-journald.service  
ListenDatagram=/run/systemd/journal/dev-log
Symlinks=/dev/log  
SocketMode=0666
PassCredentials=yes  
PassSecurity=yes

ReceiveBuffer=8M
SendBuffer=8M  
6
задан 13 April 2017 в 05:23

4 ответа

Проверьте, имеете ли Вы /run/systemd/journal/dev-log; это должен быть сокет:

$ ls -l /run/systemd/journal/dev-log
srw-rw-rw- 1 root root 0 Dec 16 09:17 /run/systemd/journal/dev-log

, Если это проверяет, то можно просто сделать символьную ссылку от /dev/log до /run/systemd/journal/dev-log:

sudo ln -s /run/systemd/journal/dev-log /dev/log
5
ответ дан 23 November 2019 в 07:42

Вы уверены, что rsyslog установлен? В моем случае мне пришлось установить rsyslog, чтобы решить эту проблему в Ubuntu 16.04:

sudo apt-get install -y rsyslog

Обратите внимание, что даже до того, как я установил rsyslog, мой /lib/systemd/system/systemd-journald-dev-log.socket содержал то же содержимое, что и в вашем посте.

1
ответ дан 23 November 2019 в 07:42

Простой, перезапуск systemd-journald.service и необходимо быть прекрасны

sudo systemctl systemd-journald.service

перезапуска
0
ответ дан 23 November 2019 в 07:42

Для меня это закончило тем, что было проблемой с тем, как imuxsock модуль, используемый в rsyslog, работал с systemd.

В imuxsock документации они идут через, как модуль, как предполагается, работает на systemd. Шаг 1 был то, где я видел проблемы:

Шаг 1: Выберите название системного сокета

  1. Если пользователь явно не принял решение установить SysSock. Используйте = "от" затем сокета слушателя по умолчанию (иначе, “системный сокет журнала” или просто “системный сокет”), имя определяется к/dev/log. Иначе, если пользователь явно установил SysSock. Используйте = "прочь", затем rsyslog не послушает на/dev/log ИЛИ любом сокете, определенном SysSock. Параметр имени и остальная часть этого раздела не применяются.

  2. Если пользователь указал sysSock. Имя = "/path/to/custom/socket" (и не явно устанавливает SysSock. Используйте = "прочь"), затем название сокета слушателя по умолчанию перезаписывается с/path/to/custom/socket.

  3. Иначе, если rsyslog работает под systemd, И/run/systemd/journal/syslog существует, (И пользователь явно не установил SysSock. Используйте = "прочь"), затем, название сокета слушателя по умолчанию перезаписывается с/run/systemd/journal/syslog.

Система должна иметь попадающий Шаг 3 и изменение пути по умолчанию, чтобы быть "/run/systemd/journal/syslog", но вместо этого это оставалось "/var/log". Это означало, что imuxsock модуль попробует (и иногда успешно выполняться) создать сокет в/dev/log, где должна вместо этого быть символьная ссылка, созданная systemd-journald-dev-log.socket. В случае, что этому не удалось бы создать реальный сокет, будет все еще удалена символьная ссылка.

Та документация была результатом этой проблемы, сообщенной на rsyslog GitHub. Если Вы хотите пропустить обсуждение и перейти прямо к изменениям, см. PR#1 и PR#2 соответственно.

Мое решение состояло в том, чтобы просто настроить imuxsock модуль для использования пути systemd в моем/etc/rsyslog.conf:

module(load="imuxsock"
    SysSock.Name="/run/systemd/journal/syslog")

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

Если Вы считаете свою систему, и "/run/systemd/journal/syslog" не присутствует, смотрят на "syslog.socket", чтобы видеть, запускается ли это успешно как, именно это ответственен за создание сокета.

systemctl status syslog.socket

Могло случиться так, что Ваша версия rsyslog.service не определяет syslog.service как псевдоним, который необходим, поскольку syslog.socket пробует к активному тот сервис.

Если это имеет значение я работаю на встроенной версии Linux, таким образом, это не идеальная репликация проблемы здесь, но казалось достаточно необходимым совместно использовать.

1
ответ дан 23 November 2019 в 07:42

Другие вопросы по тегам:

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