web-dev-qa-db-ja.com

Linuxに/ dev / nullに相当するディレクトリはありますか?

アプリケーションを構成するときに、アプリケーションに空のファイルを読み取らせる場合は、多くの場合、/dev/nullを構成ファイルとして使用できます。ただし、アプリケーションがディレクトリからファイルのリストを読み取る場合、このトリックは使用できません。読み取るには、空のディレクトリを指定する必要があります。

Linuxには、そのような目的に使用できるデフォルトの空のディレクトリがありますか? OpenSSHがしばらくの間/ var/emptyを使用していることを知っています。もちろん、自分で空のディレクトリを作成することもできますが、FHSがこのための標準ディレクトリを指定しているのでしょうか?

85
roelvanmeer

[〜#〜] fhs [〜#〜] は、「標準」の空のディレクトリを提供しません。

Linuxシステムがディレクトリ_/var/empty_を提供することは一般的ですが、このディレクトリはFHSで定義されておらず、実際には空ではない場合があります。代わりに、特定のデーモンが独自の空のディレクトリをここに作成します。たとえば、opensshは空のディレクトリ_/var/empty/sshd_を使用して権限を分離します。

空のディレクトリが一時的に必要な場合は、_/run_または_/tmp_のサブディレクトリとして、自分で空のディレクトリを作成できます。プログラムの外でこれを行う場合は、 _mktemp -d_ を使用するか、プログラム内で mkdtemp(3) C関数を使用できます。 alwaysに空のディレクトリが必要な場合は、opensshと同様に、_/var/empty_の下にディレクトリを作成することを検討してください。

この使用例では、_/tmp_の下にディレクトリを作成するのがおそらく最も適していますが、実際にはどこに配置してもかまいません。

66
Michael Hampton

mktemp -d を使用して、デフォルトで/tmp/に安全な権限を持つ新しい空の一時ディレクトリを作成できます。ユーティリティは、STDOUTに新しいディレクトリのパスを出力するため、シェルで役立ちます。

とにかく、systemdユニットファイルよりも移植性があります。

37
oals

このUnixの質問 には、 nullfs Fuseファイルシステム を含む、「ブラックホール」ディレクトリの作成に関するいくつかの提案があります。

26
200_success

サービスの場合、systemdはプライベートを作成するオプション PrivateTmp を提供します/tmpおよび/var/tmpそのサービスのネームスペース外のプロセスによって共有されておらず、(最初は)空であるはずのディレクトリ。

[Service]
ExecStart=...
PrivateTmp=yes 
11
HBruijn