O /etc/init.d
diretó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?
O /etc/init.d
diretó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?
Respostas:
O Ubuntu usa /etc/init.d
para 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
.
/etc/init.d
. A transição /etc/init/*.conf
começou mais tarde (8.04 ainda era do estilo SysV, 10.04 já estava em transição).
/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.
O Slackware ainda usa/etc/rc.d
O FreeBSD usa /etc/rc.d
e/usr/local/etc/rc.d
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 rc
sistema 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.
Na verdade, pelo menos no CentOS 6.8 Santiago, /etc/init.d
é apenas um link para /etc/rc.d
.
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.
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 chkconfig
comando 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.
/etc/rc.d
eu já vi ... suspeito que possa ser usada no bsd.