No linux, por que as pastas para arquivos de configuração sempre têm o nome * .d

12

No linux, por que as pastas dos arquivos de configuração sempre são nomeadas *.d?

Dizer

  • /etc/init.d
  • /etc/grub.d
  • /etc/apparmor.d
Qian
fonte
2
O AskUbuntu tem a resposta para sua pergunta.
Mehper C. Palavuzlar
O mesmo acontece com o site Linux e Unix StackExchange: unix.stackexchange.com/questions/4029/…
frabjous
Essa mesma pergunta foi feita na falha do servidor cerca de 8 horas atrás.
Pausado até novo aviso.

Respostas:

22

O .dsignifica diretório. É uma convenção distinguir a configuração baseada em diretório de uma configuração baseada em um único arquivo de configuração. Freqüentemente você terá ambos em alguma capacidade, por exemplo /etc/logrotate.confe /etc/logrotate.d/.

Também é geralmente o caso em que todos os arquivos (com nome razoável) em um diretório desse tipo são combinados automaticamente em uma única configuração. Os pacotes podem instalar arquivos em um diretório como esse e serão usados ​​automaticamente. Novamente, /etc/logrotate.d/é um bom exemplo. Por constraste, um diretório de arquivos de configuração que não termina .dprovavelmente contém apenas agrupamento aleatório de arquivos de configuração pertencentes ao mesmo pacote e você não pode deduzir nada sobre como eles são processados, por exemplo /etc/zsh/.

Peter Eisentraut
fonte
2

Para expandir um pouco a resposta de Peter, esse padrão .d permite a adição e remoção mais simples de arquivos de configuração: para um determinado programa .d, o administrador pode simplesmente copiar ou remover um arquivo no diretório .d sem precisar editar um arquivo de configuração existente.

Por exemplo, se você deseja adicionar um trabalho cron ao seu sistema, você pode editar / etc / crontab com seu novo trabalho agendado usando seu editor de texto favorito. Isso é bom para um único servidor ou poucos servidores, mas tente fazer isso em 100 servidores se você trabalha em um ambiente de datacenter / nuvem. No último caso, você pode usar algo como sed com um arquivo temporário ou uma ferramenta como ex para escrever o arquivo no local, mas há um pouco de risco aqui se você não tiver criado seu comando corretamente. Na verdade, eu vi os arquivos de configuração completamente nus devido a um erro de digitação nesses comandos de edição.

Agora compare isso com a colocação de um arquivo com seus trabalhos agendados no /etc/cron.d. Você apenas copia o arquivo para ele e na próxima vez em que o cron for executado (normalmente a cada minuto), ele verá o novo arquivo e o originará / processará de acordo. Isso é ótimo, como Peter afirma, se você gosta de lançar seus próprios pacotes: o arquivo /etc/cron.d é apenas outro arquivo no arquivo de pacotes que é instalado. Na remoção do pacote, o arquivo cron.d é removido e seu cron não é mais executado.

Por fim, todo programa que possui um diretório .d pode ter sua própria implementação na medida em que os arquivos são originados, como incluir substituição de ordem e configuração. Portanto, sempre que você decidir colocar um arquivo em um diretório .d, sempre verifique se ele faz o que deseja e não presuma que ele funcione exatamente como em outro programa que tenha um diretório .d.

Antony Nguyen
fonte