アプリケーションを構成するときに、アプリケーションに空のファイルを読み取らせる場合は、多くの場合、/dev/null
を構成ファイルとして使用できます。ただし、アプリケーションがディレクトリからファイルのリストを読み取る場合、このトリックは使用できません。読み取るには、空のディレクトリを指定する必要があります。
Linuxには、そのような目的に使用できるデフォルトの空のディレクトリがありますか? OpenSSHがしばらくの間/ var/emptyを使用していることを知っています。もちろん、自分で空のディレクトリを作成することもできますが、FHSがこのための標準ディレクトリを指定しているのでしょうか?
[〜#〜] fhs [〜#〜] は、「標準」の空のディレクトリを提供しません。
Linuxシステムがディレクトリ_/var/empty
_を提供することは一般的ですが、このディレクトリはFHSで定義されておらず、実際には空ではない場合があります。代わりに、特定のデーモンが独自の空のディレクトリをここに作成します。たとえば、opensshは空のディレクトリ_/var/empty/sshd
_を使用して権限を分離します。
空のディレクトリが一時的に必要な場合は、_/run
_または_/tmp
_のサブディレクトリとして、自分で空のディレクトリを作成できます。プログラムの外でこれを行う場合は、 _mktemp -d
_ を使用するか、プログラム内で mkdtemp(3)
C関数を使用できます。 alwaysに空のディレクトリが必要な場合は、opensshと同様に、_/var/empty
_の下にディレクトリを作成することを検討してください。
この使用例では、_/tmp
_の下にディレクトリを作成するのがおそらく最も適していますが、実際にはどこに配置してもかまいません。
mktemp -d
を使用して、デフォルトで/tmp/
に安全な権限を持つ新しい空の一時ディレクトリを作成できます。ユーティリティは、STDOUT
に新しいディレクトリのパスを出力するため、シェルで役立ちます。
とにかく、systemdユニットファイルよりも移植性があります。
このUnixの質問 には、 nullfs Fuseファイルシステム を含む、「ブラックホール」ディレクトリの作成に関するいくつかの提案があります。
サービスの場合、systemdはプライベートを作成するオプション PrivateTmp
を提供します/tmp
および/var/tmp
そのサービスのネームスペース外のプロセスによって共有されておらず、(最初は)空であるはずのディレクトリ。
[Service]
ExecStart=...
PrivateTmp=yes