Mounten Sie beim Start einen tmpfs-Ordner (flüchtig) mit einem erstellten Unterordner

Mounten Sie beim Start einen tmpfs-Ordner (flüchtig) mit einem erstellten Unterordner

Derzeit verwende ich Debian 9.5 mit dieser fstabDatei:

# /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/volatilenicht existiert, wird er nun erstellt ( x-mount.mkdir). Was wäre die korrekte Vorgehensweise, um einen Unterordner (eg) wie /var/volatile/subfoldergerade 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.confmit 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/volatiletemporären Servern mithilfe der After=local-fs.targetUnit-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/tmpfsinitund 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 AfterUnit-Direktive und den Befehl zum Erstellen des benötigten Unterverzeichnisses zu einem ExecStartPreBefehl hinzufügen.

verwandte Informationen