LINUX.ORG.RU

В /var/run после перезагрузки не создаётся каталог nscd

 , ,


0

1

В /var/run после перезагрузки не создаётся каталог nscd, соответственно nscd.service запуститься не может. То же самое с minidlna. С другими сервисами, например samba, проблем нет, каталог создаётся, сервис запускается. Система - openSUSE Tumbleweed. Есть второй комп, тоже с openSUSE Tumbleweed, там такой проблемы нет. В /usr/lib/tmpfiles.d/nscd.conf есть запись: d /run/nscd 0755 root root. Закостылил временное решение проблемы, добавил в /etc/systemd/system/multi-user.target.wants/nscd.service строчку ExecStartPre=/bin/mkdir -p /var/run/nscd, но иногда после обновления этот файл меняется на дефолтный и nscd опять перестаёт работать. Почему некоторые каталоги в /var/run могут не создаваться автоматически при загрузке?

Ответ на: комментарий от eternal_sorrow

Это костыль пожёстче, но всё равно костыль. То что каталог не создаётся - это симптом косяка, хотелось бы докопаться до его причины и устранить её, а то потом могут вылезти другие неожиданные симптомы.

BityjPixel
() автор топика
Последнее исправление: BityjPixel (всего исправлений: 1)
Ответ на: комментарий от NDfan

На том, где каталоги не создаются:

systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
     Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static)
     Active: active (exited) since Sat 2021-02-20 14:18:19 MSK; 16min ago
       Docs: man:tmpfiles.d(5)
             man:systemd-tmpfiles(8)
    Process: 698 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=73)
   Main PID: 698 (code=exited, status=73)

Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /tmp during canonicalization of /tmp.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /tmp during canonicalization of /tmp.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/lib/xkb/compiled.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/log/journal.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/log/journal.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/log/journal/bc6799663cf94909b8ca91e2d140c068.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/log/journal/bc6799663cf94909b8ca91e2d140c068.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /run during canonicalization of /run/log/journal.
Feb 20 14:18:19 linux systemd-tmpfiles[698]: Detected unsafe path transition / → /var during canonicalization of /var/log/journal/bc6799663cf94909b8ca91e2d140c068/system.journal.
Feb 20 14:18:19 linux systemd[1]: Finished Create Volatile Files and Directories.
На том компе, где каталоги создаются в конце предпоследней строки есть отличие:
(code=exited, status=0/SUCCESS)
Вот результат journalctl -u systemd-tmpfiles-setup.service -n 100 --no-pager с компа, где не создаются каталоги:

https://pastebin.com/C1HM7qGJ

Ошибок там вроде нет. Не понятно, почему в одном случае status=73, а в другом status=0/SUCCESS и что это означает

BityjPixel
() автор топика
Последнее исправление: BityjPixel (всего исправлений: 1)
Ответ на: комментарий от BityjPixel

(code=exited, status=73)

А, ну это всё объясняет.

Не понятно, почему в одном случае status=73 <…> и что это означает

Ненулевой код возврата в UNIX-подобных практически всегда означает какую-то ошибку.

https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html#Exit%20status

If the configuration was syntactically valid, but could not be executed (lack of permissions, creation of files in missing directories, invalid contents when writing to /sys/ values, …), 73 is returned (EX_CANTCREAT from /usr/include/sysexits.h).

Передай в systemd-tmpfiles-setup.service переменную окружения SYSTEMD_LOG_LEVEL=debug и попытайся воспроизвести проблему.

Чтобы это сделать, можно либо запустить systemctl edit systemd-tmpfiles-setup.service, либо руками создать drop-in (/etc/systemd/system/systemd-tmpfiles-setup.service.d/debug.conf) и вписать туда следующее:

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Сделал. Вот вывод journalctl -u systemd-tmpfiles-setup.service -b:https://pastebin.com/0Z1dXfR7

Там есть строки:

фев 20 19:46:21 linux systemd-tmpfiles[693]: Failed to determine whether '/run/nscd' is below autofs, ignoring: No such file or directory
фев 20 19:46:21 linux systemd-tmpfiles[693]: Running remove action for entry d /run/nscd
Не совсем понятно, что тут имеется ввиду, но такие же строки есть и для samba, а каталог /run/samba при этом создаётся.
фев 20 19:46:21 linux systemd-tmpfiles[693]: Failed to determine whether '/run/samba' is below autofs, ignoring: No such file or directory
фев 20 19:46:21 linux systemd-tmpfiles[693]: Running remove action for entry d /run/samba

BityjPixel
() автор топика
Ответ на: комментарий от BityjPixel

Да, это не ошибка. В логе ничего криминального. Каталог сначала удаляется, потом создаётся.

Не знаю, в чём проблема. Можно разве что на кофейной гуще погадать. Ищи, кто затирает этот каталог после его создания. Ещё можно проверить, нет ли гонки — сравнить время запуска systemd-tmpfiles-setup.service и nscd.service. Ещё посмотреть, нет ли у тебя в fstab или где-то ещё упоминаний /var или /run — поверх них точно ничего не монтируется?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от BityjPixel

Особо так в выводах выше проблемы тоже не вижу.

В дополнение к рекомендациям intelfx, могу предложить позапускать команду сервиса systemd-tmpfiles, из командной строки ( может даже на разных этапах загрузки ).

Если не станет понятнее, послушать происходящее там аудитом. Т.е. типа такого:

# временно настроено слежение (устойчиво к перезагрузкам)
# следим только за write и attribute change
# метка-ключ событий: TMPFILES
cat /etc/audit/rules.d/mytest-tmpfiles.rules 
-w /run/ -p wa -k TMPFILES

# запускается команда из ExecStart
/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev

# интепретируем журнал аудита, нужного ключа, с последней перезагрузки, только неуспешные
ausearch -i -k TMPFILES -ts boot -sv no  | grep -C2 nscd
NDfan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.