Lösung 1:
Der FHS stellt kein "standardmäßiges" leeres Verzeichnis zur Verfügung.
Für Linux-Systeme ist es üblich, ein Verzeichnis /var/empty bereitzustellen , aber dieses Verzeichnis ist in FHS nicht definiert und darf nicht wirklich leer sein. Stattdessen erstellen bestimmte Daemons hier ihre eigenen leeren Verzeichnisse. Zum Beispiel verwendet openssh das leere Verzeichnis /var/empty/sshd für Privilegientrennung.
Wenn Sie nur vorübergehend ein leeres Verzeichnis benötigen, können Sie selbst ein leeres Verzeichnis als Unterverzeichnis von /run erstellen oder /tmp . Wenn Sie dies außerhalb des Programms tun, können Sie mktemp -d verwenden dafür oder verwenden Sie den mkdtemp(3) C-Funktion in Ihrem Programm. Aber wenn Sie immer Wenn das leere Verzeichnis vorhanden sein muss, erwägen Sie, eines unter /var/empty zu erstellen wie es openssh tut.
Erstellen Sie für diesen Anwendungsfall ein Verzeichnis unter /tmp passt wahrscheinlich am besten, obwohl es in der Praxis nicht so wichtig ist, wo Sie es platzieren.
Lösung 2:
Sie können mktemp -d verwenden um ein neues leeres temporäres Verzeichnis mit sicheren Berechtigungen zu erstellen, standardmäßig in /tmp/ . Das Dienstprogramm gibt den Pfad des neuen Verzeichnisses auf STDOUT aus , daher ist es in der Shell nützlich.
Es ist ohnehin portabler als eine systemd-Unit-Datei.
Lösung 3:
Diese Unix-Frage enthält einige Vorschläge zum Erstellen eines "Blackhole"-Verzeichnisses, einschließlich eines nullfs FUSE-Dateisystems.
Lösung 4:
Für Dienste bietet systemd die Option PrivateTmp um private /tmp zu erstellen und /var/tmp Verzeichnisse, die nicht von Prozessen außerhalb des Namensraums für diesen Dienst gemeinsam genutzt werden und die (anfänglich) leer sein sollten.
[Service]
ExecStart=...
PrivateTmp=yes