При настройке приложения вы часто можете использовать его /dev/null
как файл конфигурации, если хотите, чтобы приложение считывало пустой файл. Но, если приложение читает список файлов из каталога, вы не можете использовать этот трюк. Вы должны дать ему пустой каталог для чтения.
Мне было интересно: есть ли в Linux пустой каталог по умолчанию, который можно использовать для таких целей? Я знаю, что OpenSSH некоторое время использовал / var / empty, и я, конечно, могу сам создать пустой каталог, но, возможно, FHS определил для этого стандартный каталог?
/var/empty
он не пустой, но содержит папку с именемsshd
, так что вы, вероятно, не хотите использовать это./dev/null
не столько для чтения, сколько для письма. Данные, записанные в/dev/null
просто исчезают. Таким образом, эквивалент каталога будет местом, в которомmv yourfile /dev/empty
будет удален ваш файл.mv yourfile /dev/empty/
. Если вы это сделаетеmv yourfile /dev/empty
, вы пытаетесь заменить специальный каталог./dev/null
иdd
потомуdd
что получите EOF еще до того, как он будет записан в один байт. Я думаю, что вы думаете о том/dev/zero
, что часто используется, чтобы заполнить что-то или генерировать определенное количество нулей./dev/null
с/dev/zero
.Ответы:
FHS не дает «стандартный» пустую директорию.
Обычно в системах Linux указывается каталог
/var/empty
, но этот каталог не определен в FHS и может фактически не быть пустым. Вместо этого некоторые демоны будут создавать свои собственные пустые каталоги здесь. Например, openssh использует пустой каталог/var/empty/sshd
для разделения привилегий.Если ваша потребность в пустом каталоге временная, вы можете создать пустой каталог самостоятельно, как подкаталог
/run
или/tmp
. Если вы делаете это вне программы, вы можете использоватьmktemp -d
это или использоватьmkdtemp(3)
функцию C внутри вашей программы. Хотя, если вам всегда нужен пустой каталог, рассмотрите возможность его создания/var/empty
в openssh.В этом случае
/tmp
лучше всего подойдет создание каталога в папке , хотя на практике не имеет большого значения, куда вы его поместите.источник
/var/empty
, поскольку любые программы, которые его используют (например, OpenSSH в его конфигурации по умолчанию ), могут ожидать, что он будет фактически пустым. (/var/empty/sshd
Похоже, что это странный RedHat-ism;/var/run/sshd
вместо этого используется Debian .)/var/empty
пустой. Есть ли где-то еще, кто-то может искать это?/var/empty
но код на самом деле использует/var/empty/sshd
. Попробуйте еще раз. :)/var/empty
ни для чего, поскольку вы не можете быть уверены в его семантике в любой конкретной системе. Создание собственной пустой директории, например/var/run
, в Debian, кажется более разумным.Вы можете использовать
mktemp -d
для создания нового пустого временного каталога с безопасными разрешениями, по умолчанию в/tmp/
. Утилита выведет путь нового каталогаSTDOUT
, так что это полезно в оболочке.В любом случае, он более переносим, чем системный файл.
источник
В этом вопросе Unix есть несколько предложений по созданию каталога «blackhole», включая файловую систему FUSE nullfs .
источник
Для сервисов systemd предоставляет возможность
PrivateTmp
создавать приватные каталоги/tmp
и/var/tmp
каталоги, которые не используются процессами вне пространства имен для этого сервиса и которые должны быть пустыми (изначально).источник
/tmp
они будут пустыми только потому, что они были пространством имен.