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

221

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

Mais geralmente, que significado o sufixo .d transmite a um diretório?

    
por Olivier Lalonde 02.10.2010 / 00:59

3 respostas

220

/etc/init.d contém scripts usados pelas ferramentas de inicialização do System V (SysVinit). Este é o pacote de gerenciamento de serviços tradicional para Linux, contendo o programa init (o primeiro processo que é executado quando o kernel termina de ser inicializado), bem como alguma infraestrutura para iniciar e parar serviços e configurá-los. Especificamente, os arquivos em /etc/init.d são scripts de shell que respondem aos comandos start , stop , restart e (quando suportado) reload para gerenciar um determinado serviço. Esses scripts podem ser chamados diretamente ou (mais comumente) por meio de 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 informando ao Upstart como e quando start , stop , reload a configuração ou consultam 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 nos nomes de diretório 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 criar um% virtualsources.list; /etc/network/if-up.d contém scripts que são executados quando uma rede i nter f ace está ativada). 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.d , e o Upstart usou init para um diretório com uma finalidade similar (seria mais “mainstream” ", E talvez menos arrogante, se eles tivessem usado /etc/upstart.d ).

¹ sem contar o initrd

    
por Gilles 02.10.2010 / 01:28
28

O ".d" geralmente é anexado a um nome de diretório para indicar que o que costumava ser (ou o que poderia ter sido) tratado por um único script ou por 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 ordem eles sejam incluídos / executados, 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. / p>

No caso de /etc/init.d/ , isso 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á.

    
por thomasrutter 10.05.2013 / 04:51
13

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 atualmente instalado ainda é /sbin/init , portanto, não faria sentido que sua configuração tivesse um nome que não combine o binário.

    
por Scott 13.10.2010 / 03:59