Linux 中是否有与 /dev/null 等效的目录?

Linux 中是否有与 /dev/null 等效的目录?

配置应用程序时,/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 

相关内容