Systemd Journald обращается к неправильному местоположению - не удается открыть / запустить / записать в журнал / файл журнала

Я играл сегодня с инструментами BPF (из книги Брэнда Грегга BPF ) и выполнил команду sudo opensnoop-bpfcc -x -U и заметил много следов, подобных этому:

0     403    systemd-journal    -1   2 /run/log/journal/5c01742aed6d4d58bed5f1671e612657/system.journal

Это моя основная машина Lenovo p72, на которой работает Ubuntu 20.04 ...

$ uname -a
Linux 5.4.0-39-generic #43-Ubuntu SMP Fri Jun 19 10:28:31 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Обнаружив это, я обнаружил, что в / run / ничего нет log / journal :

$ ls -al /run/log/journal/
total 0
drwxr-sr-x+ 2 root systemd-journal 40 Jun 28 15:06 .
drwxr-xr-x  3 root root            60 Jun 28 15:06 ..

... и / run действительно временная файловая система:

$ cat /proc/mounts | grep run
tmpfs /run tmpfs rw,nosuid,nodev,noexec,relatime,size=6554292k,mode=755 0 0

Почему journald пытается получить доступ к файлу в местоположении, которое просто не существует, в временное монтирование файловой системы? Что-то настроено неправильно? Даже когда я редактирую /etc/systemd/journald.conf и изменяю конфигурацию на Storage = parsistent , journald по-прежнему пытается получить доступ к / run / log . Единственное правильное местоположение - / var / log / journal / , где путь существует в моей системе, и он записывает данные в это местоположение. Это также происходит со второй машиной, на которой установлена ​​та же ОС, которая указана ниже.

update 2020-07-24 11:44:27

> grep -v '#' /etc/rsyslog.d/50-default.conf | sed '/^$/d'
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
kern.*              -/var/log/kern.log
mail.*              -/var/log/mail.log
mail.err            /var/log/mail.err
*.emerg             :omusrmsg:*
0
задан 24 July 2020 в 21:45

1 ответ

Это нормальное и нормальное поведение.

  • На ранней стадии загрузки каталог / var не смонтирован и готов к записи файлов журнала на жестком диске. диск. Поэтому память используется для хранения, а данные журнала записываются в / run / log / journal . После монтирования все данные сбрасываются на диск (systemd-journactl-flush.service).

  • После этого менеджер службы systemd вызывает все процессы службы со стандартным выводом и стандартной ошибкой, связанной с журналом по умолчанию. Следовательно, потоки данных передаются из модуля в каталог run, и далее к / var / log . ​​

1
ответ дан 30 July 2020 в 22:17

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

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