Монтировать папку tmpfs при запуске (volatile) с созданной подпапкой

Монтировать папку tmpfs при запуске (volatile) с созданной подпапкой

В настоящее время используется Debian 9.5 с этим fstabфайлом:

# /etc/fstab: static file system information.
#
/dev/mmcblk1p1  /              ext4   noatime,errors=remount-ro  0  1    
tmpfs           /var/volatile  tmpfs  defaults,x-mount.mkdir     0  0

Теперь, если папка /var/volatileне существует, она будет создана ( x-mount.mkdir). Каков правильный способ создания подпапки (например), например, /var/volatile/subfolderпосле успешного завершения процедуры монтирования?

Я хочу, чтобы эта подпапка была создана до того, как systemd продолжит выполнение своих задач до завершения запуска.

решение1

После изучения systemd я наткнулся на приветственное открытие. Оказывается, нет необходимости создавать пользовательский сервис для решения этой проблемы, поскольку systemd уже предоставляет решение для этой цели:systemd-tmpfiles. Это структурированный и настраиваемый метод управления временными каталогами и файлами.

https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html

Просто создайте файл /etc/tmpfiles.d/volatile-subfolder.confсо следующим содержимым:

d       /var/volatile/subfolder 0755 root root - -

И перезарядить.

решение2

Одним из способов решения этой проблемы является создание новой службы systemd (или изменение существующей) для управления созданием этого каталога в вашей /var/volatiletempfs с помощью After=local-fs.targetдирективы unit.

[Unit]
Description=Tempfs initialize
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder


[Install]
WantedBy=multiuser.target

Добавьте это /etc/systemd/system/tmpfsinitи затем выполните обычные действия systemctl daemon-reload && systemctl enable tempfsinit.

В качестве альтернативы, если у вас уже есть пользовательская служба systemd, вы также можете добавить Afterдирективу unit и команду для создания нужного вам подкаталога в ExecStartPreкоманду.

Связанный контент