Řešení 1:
FHS neposkytuje žádný "standardní" prázdný adresář.
Je běžné, že systémy Linux poskytují adresář /var/empty
, ale tento adresář není definován ve FHS a ve skutečnosti nemusí být prázdný. Místo toho si zde někteří démoni vytvoří své vlastní prázdné adresáře. Například openssh používá prázdný adresář /var/empty/sshd
pro oddělení oprávnění.
Pokud je vaše potřeba prázdného adresáře přechodná, můžete si sami vytvořit prázdný adresář jako podadresář /run
nebo /tmp
. Pokud to děláte mimo program, můžete použít mktemp -d
nebo použijte mkdtemp(3)
C funkce uvnitř vašeho programu. I když vždy potřebujete, aby byl přítomen prázdný adresář, zvažte vytvoření jednoho pod /var/empty
jako openssh.
Pro tento případ použití vytvořte adresář pod /tmp
je pravděpodobně nejvhodnější, i když v praxi příliš nezáleží na tom, kam jej umístíte.
Řešení 2:
Můžete použít mktemp -d
vytvořit nový prázdný dočasný adresář se zabezpečenými oprávněními, ve výchozím nastavení v /tmp/
. Obslužný program vypíše cestu k novému adresáři na STDOUT
, takže je užitečný v shellu.
Každopádně je přenosnější než soubor systemd unit.
Řešení 3:
Tato unixová otázka obsahuje několik návrhů na vytvoření adresáře "blackhole", včetně souborového systému nullfs FUSE.
Řešení 4:
Pro služby systemd poskytuje možnost PrivateTmp
vytvořit soukromé /tmp
a /var/tmp
adresáře, které nejsou sdíleny procesy mimo jmenný prostor pro danou službu a které by měly být prázdné (zpočátku).
[Service]
ExecStart=...
PrivateTmp=yes