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/
。 该实用程序将在STDOUT
上STDOUT
新目录的path,所以它在shell中很有用。
无论如何,它比systemd单元文件更具可移植性。
这个Unix问题对于创build一个“黑洞”目录有一些build议,包括一个nullfs FUSE文件系统 。
对于服务,systemd提供PrivateTmp
选项来创buildprivate /tmp
和/var/tmp
目录,这些目录不是由该服务的命名空间之外的进程共享的,并且应该是空的(最初)。
[Service] ExecStart=... PrivateTmp=yes