ti-enxame.com

/etc/rc.d vs /etc/init.d

É /etc/init.d diretório exatamente equivalente (funcionalmente) ao que presumo ser o mais padrão /etc/rc.d/ (pelo menos no Arch)? Existe algum motivo particular pelo qual canônico usou init.d em vez de rc.d para scripts de inicialização?

15
Falmarri

Ubuntu usa /etc/init.d para armazenar scripts SysVinit porque o Ubuntu é baseado no Debian e é isso que o Debian usa. Red Hat usa /etc/rc.d/init.d. Eu esqueci o que o Slackware usa. Simplesmente não existe um local padrão.

O Ubuntu está em processo de mudança de SysVinit para pstart , que usa arquivos de configuração em /etc/init .

16

/etc/init.d era o local histórico antigo do SVR4. Eu esqueci porque o redhat adicionou o nível /etc/rc.d/. Eu acho que para isolar as coisas em rc.d, mas então precisei adicionar um monte de links simbólicos de qualquer maneira para compatibilidade com versões anteriores. Portanto, há /etc/init.d no redhat, apenas links simbólicos em outro lugar.

Portanto, a localização padrão é /etc/init.d, embora possa ser um link simbólico e não um diretório real.

Havia algumas distros Linux realmente antigas que copiavam o BSD com /etc/rc.local, mas praticamente ninguém usa mais isso.

7
Rich Homolka

Slackware ainda usa /etc/rc.d

FreeBSD usa /etc/rc.d e /usr/local/etc/rc.d

6
mazianni

Historicamente, o /etc/rc.d árvore de diretórios denota um sistema Init que segue a tradição do 4.4 BSD de inicialização do sistema, que normalmente é chamado de sistema rc init. Todos os modernos sistemas BSD (Free/Open/Net) e Slackware Linux seguem esta tradição.

O /etc/init.d árvore de diretório denota o sistema de inicialização System V (SysV) que segue a tradição de inicialização do sistema AT&T UNIX, SunOS, Solaris. Isso é comumente chamado de sistema SysV Init. O Debian propriamente dito ainda segue essa tradição na série Wheezy, mas planeja usar o SystemD na série Jessie. Historicamente, o RedHat e seus derivados usaram o SysV Init, mas não o fazem mais.

Além disso, ao longo do tempo, os recursos de ambos os esquemas init foram adotados pelas distribuições.

5
λ Jonas Gorauskas

OK então, /etc/init.d é um lugar onde você pode implementar rapidamente um script init. A segunda etapa para ativar este script é executar um comando chkconfig nele. Digamos que você execute chkconfig --add <yourscript>, links simbólicos serão criados entre /etc/init.d/<yourscript> e /etc/rc.d/rcX.d/S50<script> por exemplo. X em rcX.d representando o número do nível de execução do script, e S50 representando o tipo de script (há dois desses tipos, S & K, S diz ao sistema para iniciar o script quando ele inicializa e K diz ao sistema para saia do script normalmente quando você desligar. O número após S/K representa a ordem em que isso acontece, caso você tenha alguns scripts que dependem de outros estarem ativos primeiro). Por padrão, se nenhum nível de execução for especificado no script ou quando você emitir o comando de nível de execução, o CentOS6 cria scripts S50 para níveis de execução 2,3,4,5 e K50 para níveis de execução 0,1,6.

0
chromechris

Na verdade, pelo menos no CentOS 6.8 Santiago, /etc/init.d é apenas um softlink para /etc/rc.d.

0
chromechris

PuppyLinux tem / etc/rc.d e / etc/init.d, nenhum sendo um link simbólico. O que é um link simbólico é /etc/rc.d/init.d, que vincula um nível acima a /etc/init.d (estou olhando para um Slackware baseado no Puppy-- também existem no Ubuntu e outros sabores.) Há um README.txt em cada um, explicando sua abordagem.

0
Mark A. Williams