Questão Qual é a diferença entre / etc / init / e /etc/init.d/?


Qual é a diferença entre /etc/init/ e /etc/init.d/?

Mais geralmente, que significado faz o .d sufixo transmitir para um diretório?


217
2017-10-01 22:59


origem




Respostas:


/etc/init.d contém scripts usados ​​pelas ferramentas de inicialização do System V (SysVinit). Este é o pacote tradicional de gerenciamento de serviços para Linux, contendo o init programa (o primeiro processo que é executado quando o kernel terminar de inicializar) assim como alguma infraestrutura para iniciar e parar serviços e configurá-los. Especificamente, arquivos em /etc/init.d são scripts de shell que respondem a start, stop, restarte (quando suportado) reload comandos para gerenciar um determinado serviço. Esses scripts podem ser invocados diretamente ou (mais comumente) por meio de algum outro acionador (geralmente a presença de um link simbólico em /etc/rc?.d/).

/etc/init contém arquivos de configuração usados ​​pelo Upstart. O Upstart é um pacote de gerenciamento de serviços jovem patrocinado pelo Ubuntu. Arquivos em /etc/init são arquivos de configuração dizendo Upstart como e quando start, stop, reload a configuração ou consulte o status de um serviço. A partir do lucid, o Ubuntu está fazendo a transição do SysVinit para o Upstart, o que explica por que muitos serviços vêm com scripts do SysVinit, embora os arquivos de configuração do Upstart sejam preferidos. De fato, os scripts SysVinit são processados ​​por uma camada de compatibilidade no Upstart.

.d em nomes de diretórios geralmente indica um diretório contendo muitos arquivos de configuração ou scripts para uma situação específica (por exemplo, /etc/apt/sources.list.d contém arquivos que são concatenados para fazer um virtual sources.list; /etc/network/if-up.d contém scripts que são executados quando uma rede Eunterface está ativado). Essa estrutura é normalmente usada quando cada entrada no diretório é fornecida por uma fonte diferente, para que cada pacote possa depositar seu próprio plug-in sem precisar analisar um único arquivo de configuração para fazer referência a si mesmo. Neste caso, acontece que “init” é um nome lógico para o diretório, o SysVinit veio primeiro e usou init.de Upstart usado simples init para um diretório com um propósito similar (teria sido mais "mainstream", e talvez menos arrogante, se eles tivessem usado /etc/upstart.d em vez de).

¹ sem contar o initrd


217
2017-10-01 23:28



nota histórica esotérica: o .d diretórios digitados com o System V. Foi uma notação intrigante e, em última análise, provavelmente a ideia de uma pessoa que entrou na base de código e não pôde sair. Por exemplo, se você acha que cat é um nome ruim para a tarefa que realiza, imagine quantos arquivos em todo o sistema você teria que tocar para alterá-lo. - msw
Nos sistemas, que possuem os dois diretórios, quais dos Upstart e SysVinit são usados? Existe uma maneira de verificar? - asheeshr
@AsheeshR Verifique se existe um pacote chamado upstart ou sysvinit. E em versões recentes, poderia ser systemd também (que não existia para o Ubuntu quando eu escrevi minha resposta). É o pacote que fornece /sbin/init (dpkg -S /sbin/init). - Gilles
Na instância do AWS Ubuntu que estou usando (da Bitnami), é o upstart pacote que fornece / sbin / init (correu dpkg -S /sbin/init). Mas o Bitnami colocou seu script no diretório /etc/init.d. Isso não é conflitante com sua resposta a @AsheeshR acima? Obrigado. - Sabuncu
@Sabuncu Este é um exemplo de “SysVinit scripts são processados ​​por uma camada de compatibilidade no Upstart”. - Gilles


O ".d" geralmente é anexado a um nome de diretório para indicar que o que costumava ser (ou o que poderia ter sido) manipulado por um único script ou um único arquivo de configuração foi dividido em vários arquivos por conveniência, mas que devem ser incluídos ou executados juntos.

Por exemplo, /etc/apache/conf.d/ ou /etc/apt/sources.d/

Nos casos em que é importante que a ordem seja incluída / executada, os arquivos nesses diretórios às vezes começam com um número, como "00-default" ou "80-user", para que sejam executados na ordem correta.

No caso de /etc/init.d/ Isso meio que indica que os scripts em "init.d" devem ser todos executados. Hoje em dia, no entanto, o sistema de inicialização dos sistemas operacionais modernos é um pouco mais complicado do que isso, mas o nome do diretório ainda está lá.


26
2018-05-10 02:51



Talvez o .d significa que está relacionado a um processo 'deamon' que normalmente é iniciado no momento da inicialização.
.d é definitivamente para o diretório, não o daemon. - Martin


Como você aponta, a nomenclatura ".d" é intrigante e estranha, e realmente não tem lugar em nenhum sistema moderno - você notará que os serviços mais modernos tendem a abandoná-la.

A razão pela qual o diretório é /etc/init e não /etc/upstart é porque Upstart é o nome do projeto, o binário real instalado ainda é /sbin/init portanto, não faria sentido que sua configuração tivesse um nome que não correspondesse ao binário.


12
2017-10-13 01:59



Isso está errado, veja por exemplo udev rules.d, O Xorg é relativamente recente xorg.conf.dnão muito velho /etc/profile.d etc .. - Ruslan