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

8

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

Diga

  • /etc/init.d
  • /etc/grub.d
  • /etc/apparmor.d
por TheoYou 07.01.2011 / 13:54

2 respostas

17

O .d representa o 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. Muitas vezes você terá ambos em alguma capacidade, por exemplo /etc/logrotate.conf e /etc/logrotate.d/ .

Também é comum que todos os arquivos (com nomes razoáveis) em tal diretório sejam automaticamente combinados em uma única configuração. Os pacotes podem então instalar arquivos em um diretório como esse, e eles serão usados automaticamente. Novamente, /etc/logrotate.d/ é um bom exemplo. Por constrast, um diretório de arquivos de configuração que não termina em .d provavelmente contém apenas agrupamentos aleatórios de arquivos de configuração pertencentes ao mesmo pacote, e você não pode inferir nada sobre como eles são processados, exemplo /etc/zsh/ .

    
por 07.01.2011 / 14:48
2

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

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

Agora compare isso com colocar um arquivo com seus trabalhos agendados em /etc/cron.d. Você apenas copia o arquivo para ele, e na próxima vez que o cron for executado (normalmente a cada minuto), ele verá o novo arquivo e o processará de acordo. Isso é ótimo, como diz Peter se você gosta de rolar seus próprios pacotes: o arquivo /etc/cron.d é apenas outro arquivo no repositório 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, até onde os arquivos são originados, como a 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 você quer e não apenas assuma que ele funciona como em outro programa que tenha um diretório .d.

    
por 10.05.2013 / 02:30

Tags