Я играл сегодня с инструментами 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:*
Это нормальное и нормальное поведение.
На ранней стадии загрузки каталог / var
не смонтирован и готов к записи файлов журнала на жестком диске. диск. Поэтому память используется для хранения, а данные журнала записываются в / run / log / journal
. После монтирования все данные сбрасываются на диск (systemd-journactl-flush.service).
После этого менеджер службы systemd вызывает все процессы службы со стандартным выводом и стандартной ошибкой, связанной с журналом по умолчанию. Следовательно, потоки данных передаются из модуля в каталог run, и далее к / var / log
.