На моей машине (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
Проверьте, имеете ли Вы /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
Вы уверены, что rsyslog установлен? В моем случае мне пришлось установить rsyslog, чтобы решить эту проблему в Ubuntu 16.04:
sudo apt-get install -y rsyslog
Обратите внимание, что даже до того, как я установил rsyslog, мой /lib/systemd/system/systemd-journald-dev-log.socket
содержал то же содержимое, что и в вашем посте.
Простой, перезапуск systemd-journald.service и необходимо быть прекрасны
sudo systemctl systemd-journald.service
перезапускаДля меня это закончило тем, что было проблемой с тем, как imuxsock модуль, используемый в rsyslog, работал с systemd.
В imuxsock документации они идут через, как модуль, как предполагается, работает на systemd. Шаг 1 был то, где я видел проблемы:
Шаг 1: Выберите название системного сокета
Если пользователь явно не принял решение установить SysSock. Используйте = "от" затем сокета слушателя по умолчанию (иначе, “системный сокет журнала” или просто “системный сокет”), имя определяется к/dev/log. Иначе, если пользователь явно установил SysSock. Используйте = "прочь", затем rsyslog не послушает на/dev/log ИЛИ любом сокете, определенном SysSock. Параметр имени и остальная часть этого раздела не применяются.
Если пользователь указал sysSock. Имя = "/path/to/custom/socket" (и не явно устанавливает SysSock. Используйте = "прочь"), затем название сокета слушателя по умолчанию перезаписывается с/path/to/custom/socket.
Иначе, если 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, таким образом, это не идеальная репликация проблемы здесь, но казалось достаточно необходимым совместно использовать.