Существует ли в Linux каталог, эквивалентный / dev / null?

При настройке приложения вы часто можете использовать / dev / null в качестве файла конфигурации, если хотите, чтобы приложение читало пустой файл. Но если приложение читает список файлов из каталога, вы не можете использовать этот трюк. Вам нужно будет предоставить ему пустой каталог для чтения.

Мне было интересно: есть ли в Linux пустой каталог по умолчанию, который можно использовать для таких целей? Я знаю, что OpenSSH какое-то время использовал / var / empty, и я, конечно, могу сам создать пустой каталог, но, может быть, FHS указал для этого стандартный каталог?

84
задан 7 December 2016 в 11:13
4 ответа

FHS не предоставляет "стандартный" пустой каталог.

Это обычное дело для Linux. систем, чтобы предоставить каталог / var / empty , но этот каталог не определен в FHS и может не быть пустым. Вместо этого некоторые демоны будут создавать здесь свои собственные пустые каталоги. Например, openssh использует пустой каталог / var / empty / sshd для разделения привилегий.

Если у вас временная потребность в пустом каталоге, вы можете сами создать пустой каталог в качестве подкаталога / run или / tmp . Если вы делаете это вне программы, вы можете использовать для этого mktemp -d или использовать функцию mkdtemp (3) C внутри вашей программы. Хотя, если вам всегда нужен пустой каталог, рассмотрите возможность создания его в / var / empty , как это делает openssh.

Для этого варианта использования создание каталога в ] / tmp , вероятно, лучше всего подходит, хотя на практике не имеет большого значения, куда вы его положите.

66
ответ дан 28 November 2019 в 19:25

Вы можете использовать mktemp -d для создания нового пустого временного каталога с безопасными разрешениями, по умолчанию в / tmp / . Утилита выведет путь к новому каталогу на STDOUT , поэтому он будет полезен в оболочке.

В любом случае он более переносим, ​​чем файл модуля systemd.

37
ответ дан 28 November 2019 в 19:25

В этом вопросе Unix есть некоторые предложения по созданию каталога «черная дыра», включая файловую систему nullfs FUSE .

22
ответ дан 28 November 2019 в 19:25

Для служб systemd предоставляет параметр PrivateTmp для создания закрытых каталогов / tmp и / var / tmp , которые не являются общими процессами за пределами пространства имен для этой службы и которое должно быть пустым (изначально).

[Service]
ExecStart=...
PrivateTmp=yes 
11
ответ дан 28 November 2019 в 19:25

Теги

Похожие вопросы