在Linux下有一个相当于/ dev / null的目录吗?

configuration应用程序时,如果您希望应用程序读取空文件,则通常可以使用/dev/null作为configuration文件。 但是,如果应用程序从目录中读取文件列表,则不能使用此技巧。 你需要给它一个空目录来阅读。

我想知道:Linux是否有一个默认的空目录,可以用于这种目的? 我知道OpenSSH使用/ var / empty了一段时间,我当然可以自己创build一个空目录,但也许FHS已经为此指定了一个标准目录?

FHS不提供“标准”空目录。

Linux系统通常提供一个/var/empty目录,但是这个目录在FHS中没有定义,实际上可能不是空的。 相反,某些守护进程会在这里创build自己的空目录。 例如,openssh使用空目录/var/empty/sshd来进行权限分离。

如果您需要一个空目录是暂时的,您可以自己创build一个空目录,作为/run/tmp的子目录。 如果你在程序外部执行此操作,则可以使用mktemp -d ,或者在程序中使用mkdtemp(3) C函数。 尽pipe如果你总是需要空目录,那么考虑在openssh下创build一个在/var/empty下的目录。

对于这个用例来说,在/tmp目录下创build一个目录可能是最合适的,尽pipe在实践中它并不重要。

您可以使用mktemp -d以安全权限创build一个新的空临时目录,默认情况下在/tmp/ 。 该实用程序将在STDOUTSTDOUT新目录的path,所以它在shell中很有用。

无论如何,它比systemd单元文件更具可移植性。

这个Unix问题对于创build一个“黑洞”目录有一些build议,包括一个nullfs FUSE文件系统 。

对于服务,systemd提供PrivateTmp选项来创buildprivate /tmp/var/tmp目录,这些目录不是由该服务的命名空间之外的进程共享的,并且应该是空的(最初)。

 [Service] ExecStart=... PrivateTmp=yes