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

15

O /etc/init.ddiretório do ubuntu é exatamente equivalente (funcionalmente) ao que eu presumo ser o mais padrão /etc/rc.d/(pelo menos no arco)? Existe alguma razão específica canônica usada init.d em vez de rc.d para scripts de inicialização?

Falmarri
fonte
1
na verdade, o arch linux é a única distribuição que /etc/rc.deu já vi ... suspeito que possa ser usada no bsd.
Xenoterracide
1
ele é usado no freebsd
wlraider70

Respostas:

16

O Ubuntu usa /etc/init.dpara armazenar scripts SysVinit porque o Ubuntu é baseado no Debian e é isso que o Debian usa. A Red Hat usa /etc/rc.d/init.d. Eu esqueço o que o Slackware usa. Simplesmente não há um local padrão.

O Ubuntu está no processo de alternar do SysVinit para o Upstart , que usa arquivos de configuração /etc/init.

Gilles 'SO- parar de ser mau'
fonte
2
Desculpe, mas /etc/init.d é o padrão, como parte do padrão SVR4 que o Linux inicia scripts copiados.
Rich Homolka
O site do Upstart alega que o Ubuntu o utiliza desde a versão 6.10
badp
@badp: Embora 6.10, ainda usava scripts init no estilo SysV /etc/init.d. A transição /etc/init/*.confcomeçou mais tarde (8.04 ainda era do estilo SysV, 10.04 já estava em transição).
Gilles 'SO- stop be evil'
2
O Ubuntu mudou do Upstart para o systemd desde 15.04.
PetroCliff
7

/etc/init.d era o local histórico antigo do SVR4. Esqueci por que a redhat adicionou o nível /etc/rc.d/. Eu acho que para isolar as coisas no rc.d, mas precisava adicionar um monte de links simbólicos para compatibilidade com versões anteriores. Portanto, existe /etc/init.d no redhat, apenas ele faz o link simbólico em outro lugar.

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

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

Rich Homolka
fonte
5

Historicamente, a /etc/rc.dárvore de diretórios denota um sistema Init que segue a tradição 4.4 BSD de inicialização do sistema, que geralmente é chamada de rcsistema init. Todo o moderno sistema BSD (Free / Open / Net) e o Slackware Linux seguem essa tradição.

A /etc/init.dárvore de diretórios indica o sistema de inicialização do System V (SysV), que segue a tradição de inicialização do sistema AT&T UNIX, SunOS, Solaris. Isso geralmente é 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 os derivativos usaram o SysV Init, mas não o fazem mais.

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

λ Jonas Gorauskas
fonte
E existe o AIX com "/etc/rc.d/init.d/". Um pouco da coluna A e um pouco de coluna B.
darkheart
0

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

chromechris
fonte
Foi exatamente o que eu quis dizer, haha. Desculpe a ortografia errada, editei minha resposta agora.
Chromechris # 14/16
Por que as pessoas votam sem dar uma explicação? A declaração, a menos que seja intencionalmente irrelevante, ainda pode ter valor ou significado para algum leitor iniciante. Explique quando você diminuiu o voto. Eu +1 para desfazer o efeito de -1
Asad Iqbal
0

O PuppyLinux possui o /etc/rc.d e o /etc/init.d , nem sendo um link simbólico. O que é um link simbólico é o /etc/rc.d/init.d , que vincula um nível ao /etc/init.d (eu estou olhando para um filhote de cachorro baseado no Slackware - também existem outros tipos de produtos baseados no Ubuntu .) Há um README.txt em cada um, explicando sua abordagem.

Mark A. Williams
fonte
0

Ok, então /etc/init.dé um local onde você pode implantar rapidamente um script init. O segundo passo para ativar esse script é executar um chkconfigcomando 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 (existem dois desses tipos, S & K, S informa ao sistema para iniciar o script quando ele inicializar 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 ativos primeiro). Por padrão, se nenhum nível de execução for especificado dentro do script ou quando você emitir o comando runlevel, o CentOS6 criará scripts S50 para os níveis de execução 2,3,4,5 e K50 para os níveis de execução 0,1,6.

chromechris
fonte