Estou correndo Ubuntu onde tenho os diretórios /etc/rc0.d
, /etc/rc1.d
, /etc/rc2.d
, ..., /etc/rc6.d
.
Arquivos de exemplo da minha máquina:
directory example symlinks in the dir
------------------------------------------
/etc/rc1.d: K76dovecot, K77ntp
/etc/rc2.d: S23ntp, S24dovecot
/etc/rc3.d: S23ntp, S24dovecot
/etc/rc4.d: S23ntp, S24dovecot
/etc/rc5.d: S23ntp, S24dovecot
Questões:
- Qual é o objetivo dos vários diretórios "rc"?
- Por que o Ubuntu instalou duplicatas de
dovecot
entp
para todos os diretórios, excetorc0.d
erc6.d
? - Se eles são especificados várias vezes como acima, eles são realmente executados várias vezes?
- Você pode dizer o que foi dito acima em que ordem
dovecot
entp
será executado na inicialização? - Qual é a maneira correta de dizer ao Ubuntu para sempre executar
ntp
antesdovecot
na inicialização?
services
init-script
init.d
roger.james
fonte
fonte
Como outros observaram, a resposta é sobre níveis de execução, que são basicamente os modos de operação de um sistema operacional. No Linux, estes são geralmente:
Portanto, cada um dos
rcN
diretórios contém links simbólicos para os scripts que devem ser executados nesse nível de execução. Todos os scripts reais estão normalmente no/etc/init.d
diretório:Nomeação de link simbólico
Um link simbólico cujo nome começa com a
S
será iniciado no nível de execução em questão, enquanto aqueles cujo nome começa comK
serão mortos. Observe que todos os links norc6.d
nível de execução de reinicialização começam comK
. Isso porque todos eles devem ser interrompidos para uma reinicialização e nada deve ser iniciado.Os números após a letra inicial referem-se à ordem de execução dos scripts vinculados. Aqueles com números menores serão executados antes daqueles com números mais altos. Portanto, no seu exemplo específico,
S23ntp
será executado (iniciado neste caso) antesS24dovecot
.fonte
S01bluetooth
eS01rsync
, a ordem será arbitrária?S01
a comparaçãob
<r
, você entendeu. Talvez!/etc/init.d/rc
dizfor s in /etc/rc$runlevel/S*; do …
, simplesmente ir na ordem de expansão glob; ou seja, numérico / alfabético. A resposta longa é que o código é muito mais complicado do que eu me lembro. Vou tentar dedicar algum tempo a estudá-lo nas próximas seis a oito semanas. À primeira vista, parece que ele está extraindo o número apósS
e fazendo algo com ele, portanto,S42beeblebrox
eS42zaphod
pode estar mais associado do que, digamos,S43arthur
eS44dent
.1) Os vários diretórios rcX.d especificam quais serviços iniciar ou parar durante o nível de execução 'X'.
2) rc0.d é para o nível de execução 0, que é encerrado. rc6.d é para reinicialização. Todos os demais são para níveis de execução diferentes (2 - 5). OS significa start e K for Kill. Estes são essencialmente links para os scripts originais em /etc/rc.d. Os números após S / K são a prioridade pela qual os serviços serão iniciados / Finalizados.
3) Sim, se forem especificados várias vezes, o script start / kill será executado várias vezes. Mas ninguém quer fazer isso.
4) Observando os números de prioridade, o serviço NTP será iniciado primeiro, seguido pelo dovecot.
5) O quarto ponto é o caminho.
fonte