
Estou executando o 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 propósito dos vários diretórios “rc”?
- Por que o Ubuntu instalou duplicatas de
dovecot
entp
em todos os diretórios, excetorc0.d
erc6.d
? - Se eles forem especificados várias vezes como acima, eles serã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
da inicialização?
Responder1
Como outros observaram, a resposta é toda sobreníveis de execuçãoque são basicamente os modos de operação de um sistema operacional. No Linux, geralmente são:
ID Name Description
0 Halt Shuts down the system.
1 Single-user Mode Mode for administrative tasks.
2 Multi-user Mode Does not configure network interfaces and
does not export networks services.
3 Multi-user Mode with Networking Starts the system normally.
4 Not used/User-definable For special purposes.
5 Start the system normally with
with GUI As runlevel 3 + display manager.
6 Reboot Reboots the system.
Portanto, cada um dos rcN
diretórios contém links simbólicos para os scripts que devem ser executados naquele nível de execução. Todos os scripts reais normalmente estão no /etc/init.d
diretório:
$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14 2013 /etc/rc5.d/S22cron -> ../init.d/cron
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 com K
serão eliminados. Observe que todos os links em rc6.d
, o nível de execução de reinicialização, começam com K
. 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 maiores. Então, no seu exemplo específico, S23ntp
será executado (iniciado neste caso)antes S24dovecot
.
Responder2
- Estes são
runlevel
s e são uma iniciação no estilo System V usada pela maioria dos sistemas *NIX (com a notável exceção dossystemd
sistemas baseados em -). Ao inicializar, o kernel/usuário decide o querunlevel
deve ser executado e executa apenas issorunlevel
. O que significa que dependendo derunlevel
você pode inicializar com um conjunto diferente de programas. Existem níveis de execução para parar e reiniciar também, mas como você está focando na parte de inicialização, vamos ignorá-los por enquanto. - Como apenas um
runlevel
é executado na inicialização, alguns programas devem/desejam iniciar/parar emrunlevel
programas diferentes com parâmetros diferentes ou iguais na mesma ordem ou em ordem diferente (nem todos os níveis de execução são iguais em todos os sistemas operacionais). Mas o Ubuntu copia os níveis de execução 3-5 do 2, é por isso que eles são iguais. - Os números
runlevel
são executados apenas uma vez na inicialização ou quando você altera o arquivorunlevel
. ntp
os scripts devem ser executados primeiro e depoisdovecot
no nível de execução 2 a 5, e não no nível de execução 1. O número ordinal nos nomes dos scripts ( ) indica a ordem de execução. Então, tudo depende do nível de execução que você está usando.S23ntp
- Depende da Distro mas no caso particular do Ubuntu você pode adicionar seu script aos níveis de execução 1 e 2.
Mais informações noWikipédiaartigo sobre níveis de execução do Ubuntu
Responder3
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 é desligado. rc6.d é para reinicialização. Todos os demais são para diferentes níveis de execução (2 - 5). O S significa começar e K significa matar. 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/eliminados.
3) Sim, se eles 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 4º ponto é o caminho.