При настройке приложения вы часто можете использовать / dev / null
в качестве файла конфигурации, если хотите, чтобы приложение читало пустой файл. Но если приложение читает список файлов из каталога, вы не можете использовать этот трюк. Вам нужно будет предоставить ему пустой каталог для чтения.
Мне было интересно: есть ли в Linux пустой каталог по умолчанию, который можно использовать для таких целей? Я знаю, что OpenSSH какое-то время использовал / var / empty, и я, конечно, могу сам создать пустой каталог, но, может быть, FHS указал для этого стандартный каталог?
FHS не предоставляет "стандартный" пустой каталог.
Это обычное дело для Linux. систем, чтобы предоставить каталог / var / empty
, но этот каталог не определен в FHS и может не быть пустым. Вместо этого некоторые демоны будут создавать здесь свои собственные пустые каталоги. Например, openssh использует пустой каталог / var / empty / sshd
для разделения привилегий.
Если у вас временная потребность в пустом каталоге, вы можете сами создать пустой каталог в качестве подкаталога / run
или / tmp
. Если вы делаете это вне программы, вы можете использовать для этого mktemp -d
или использовать функцию mkdtemp (3)
C внутри вашей программы. Хотя, если вам всегда нужен пустой каталог, рассмотрите возможность создания его в / var / empty
, как это делает openssh.
Для этого варианта использования создание каталога в ] / tmp
, вероятно, лучше всего подходит, хотя на практике не имеет большого значения, куда вы его положите.
В этом вопросе Unix есть некоторые предложения по созданию каталога «черная дыра», включая файловую систему nullfs FUSE .
Для служб systemd предоставляет параметр PrivateTmp
для создания закрытых каталогов / tmp
и / var / tmp
, которые не являются общими процессами за пределами пространства имен для этой службы и которое должно быть пустым (изначально).
[Service]
ExecStart=...
PrivateTmp=yes