%20%D1%81%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B0%D0%BF%D0%BA%D0%BE%D0%B9.png)
В настоящее время используется 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/volatile
tempfs с помощью 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
команду.