Ao configurar um aplicativo, geralmente você pode usar /dev/null
como arquivo de configuração se desejar que o aplicativo leia um arquivo vazio. Mas, se o aplicativo ler uma lista de arquivos de um diretório, você não poderá usar esse truque. Você precisaria fornecer um diretório vazio para ler.
Eu queria saber: o Linux tem um diretório vazio padrão que pode ser usado para tais fins? Sei que o OpenSSH usou / var / empty por um tempo e, é claro, posso criar um diretório vazio, mas talvez o FHS tenha especificado um diretório padrão para isso?
/var/empty
não está vazio, mas contém uma pasta chamadasshd
, portanto você provavelmente não deseja usá-lo./dev/null
não é tanto para a leitura como para a escrita. Os dados gravados/dev/null
apenas desaparecem. Portanto, um diretório equivalente seria um local ondemv yourfile /dev/empty
resultaria na exclusão do seu arquivo.mv yourfile /dev/empty/
. Se fizer issomv yourfile /dev/empty
, você está tentando substituir o diretório especial./dev/null
edd
porquedd
receberá um EOF antes mesmo de escrever um único byte. Eu acho que você está pensando/dev/zero
, que geralmente é usado para preencher algo com ou gerar um número específico de zeros./dev/null
com/dev/zero
.Respostas:
O FHS não fornece diretório vazio "padrão".
É comum que os sistemas Linux forneçam um diretório
/var/empty
, mas esse diretório não está definido no FHS e pode não estar realmente vazio. Em vez disso, certos daemons criarão seus próprios diretórios vazios aqui. Por exemplo, o openssh usa o diretório vazio/var/empty/sshd
para a separação de privilégios.Se sua necessidade de um diretório vazio for transitória, você mesmo poderá criar um diretório vazio, como um subdiretório de
/run
ou/tmp
. Se você estiver fazendo isso fora do programa, poderá usámktemp -d
-lo ou usar amkdtemp(3)
função C dentro do seu programa. Embora se você sempre precise que o diretório vazio esteja presente, considere criar um sob/var/empty
como o openssh.Nesse caso de uso, a criação de um diretório em
/tmp
provavelmente é o melhor ajuste, embora na prática não importe muito onde você o coloca.fonte
/var/empty
, pois qualquer programa que o utilize (como o OpenSSH em sua configuração padrão ) pode esperar que ele esteja realmente vazio. (A/var/empty/sshd
coisa parece ser um RedHat-ismo estranho; Debian usa/var/run/sshd
em seu lugar.)/var/empty
estar vazio. Existe algum outro lugar que alguém possa procurar por isso?/var/empty
mas o código realmente usa/var/empty/sshd
. Tente novamente. :)/var/empty
para nada, pois você não pode ter certeza de sua semântica em nenhum sistema. Criar seu próprio diretório vazio, por exemplo/var/run
, sob , como o Debian, parece mais sensato.Você pode usar
mktemp -d
para criar um novo diretório temporário vazio com permissões seguras, por padrão em/tmp/
. O utilitário exibirá o caminho do novo diretórioSTDOUT
, por isso é útil no shell.É mais portátil do que um arquivo de unidade systemd de qualquer maneira.
fonte
Esta questão do Unix tem algumas sugestões para criar um diretório "blackhole", incluindo um sistema de arquivos nullfs FUSE .
fonte
Para serviços, o systemd fornece a opção
PrivateTmp
de criar diretórios particulares/tmp
e/var/tmp
que não são compartilhados por processos fora do espaço de nomes para esse serviço e que devem estar vazios (inicialmente).fonte
/tmp
que estará vazio apenas porque foi colocado no namespace.