%20mit%20einem%20erstellten%20Unterordner.png)
Derzeit verwende ich Debian 9.5 mit dieser fstab
Datei:
# /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
Wenn der Ordner /var/volatile
nicht existiert, wird er nun erstellt ( x-mount.mkdir
). Was wäre die korrekte Vorgehensweise, um einen Unterordner (eg) wie /var/volatile/subfolder
gerade erstellt zu bekommen, nachdem der Mountvorgang erfolgreich war?
Ich möchte, dass dieser Unterordner erstellt wird, bevor systemd mit seinen Aufgaben fortfährt, bis der Start abgeschlossen ist.
Antwort1
Nachdem ich systemd erkundet hatte, stieß ich auf eine Greet-Entdeckung. Es stellte sich heraus, dass es nicht notwendig ist, einen benutzerdefinierten Dienst zu erstellen, um damit umzugehen, da systemd bereits eine Lösung für diesen Zweck bereitstellt:systemd-tmpfiles
. Es ist eine strukturierte und konfigurierbare Methode zum Verwalten temporärer Verzeichnisse und Dateien.
https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
Erstellen Sie einfach eine Datei /etc/tmpfiles.d/volatile-subfolder.conf
mit diesem Inhalt:
d /var/volatile/subfolder 0755 root root - -
Und neu laden.
Antwort2
Eine Möglichkeit, dies zu beheben, besteht darin, einen neuen systemd-Dienst zu erstellen (oder einen vorhandenen zu ändern), um die Erstellung dieses Verzeichnisses in Ihren /var/volatile
temporären Servern mithilfe der After=local-fs.target
Unit-Direktive zu handhaben.
[Unit]
Description=Tempfs initialize
After=local-fs.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder
[Install]
WantedBy=multiuser.target
Fügen Sie dies hinzu /etc/systemd/system/tmpfsinit
und führen Sie dann den üblichen Vorgang aus systemctl daemon-reload && systemctl enable tempfsinit
.
Wenn Sie bereits über einen benutzerdefinierten systemd-Dienst verfügen, können Sie alternativ auch die After
Unit-Direktive und den Befehl zum Erstellen des benötigten Unterverzeichnisses zu einem ExecStartPre
Befehl hinzufügen.