配置应用程序时,/dev/null
如果希望应用程序读取空文件,通常可以使用配置文件。但是,如果应用程序从目录中读取文件列表,则不能使用此技巧。您需要给它一个空目录来读取。
我想知道:Linux 是否有一个默认的空目录可用于此类目的?我知道 OpenSSH 有一段时间使用了 /var/empty,我当然可以自己创建一个空目录,但也许 FHS 为此指定了一个标准目录?
答案1
这跳频不提供“标准”空目录。
Linux 系统通常会提供一个目录/var/empty
,但这个目录并没有在 FHS 中定义,并且可能不是空的。相反,某些守护进程会在这里创建自己的空目录。例如,openssh 使用空目录/var/empty/sshd
进行权限分离。
如果您只是暂时需要一个空目录,您可以自己创建一个空目录,作为/run
或的子目录/tmp
。如果您在程序之外执行此操作,则可以使用mktemp -d
为此,或使用mkdtemp(3)
在你的程序中用 C 函数。但是如果你总是需要存在空目录,考虑/var/empty
像 openssh 那样在其下创建一个。
对于这种用例,在其下创建一个目录/tmp
可能是最合适的,但实际上将它放在哪里并不重要。
答案2
您可以使用mktemp -d
在 中创建一个具有安全权限的新空临时目录,默认情况下如此/tmp/
。该实用程序将在 上输出新目录的路径STDOUT
,因此它在 shell 中很有用。
无论如何,它比 systemd 单元文件更易于移植。
答案3
这个 Unix 问题对创建“黑洞”目录有一些建议,其中包括nullfs FUSE 文件系统。
答案4
对于服务,systemd 提供了选项PrivateTmp
创建私有目录/tmp
和/var/tmp
不由该服务命名空间之外的进程共享的目录,并且这些目录最初应该是空的。
[Service]
ExecStart=...
PrivateTmp=yes