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