Os diretórios rc0.d,rc1.d,... em /etc

Os diretórios rc0.d,rc1.d,... em /etc

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:

  1. Qual é o propósito dos vários diretórios “rc”?
  2. Por que o Ubuntu instalou duplicatas de dovecote ntpem todos os diretórios, exceto rc0.de rc6.d?
  3. Se eles forem especificados várias vezes como acima, eles serão realmente executados várias vezes?
  4. Você pode dizer o que foi dito acima em que ordem dovecote ntpserá executado na inicialização?
  5. Qual é a maneira correta de dizer ao Ubuntu para sempre executar ntpantes dovecotda 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 rcNdiretó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.ddiretó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 Sserá iniciado no nível de execução em questão, enquanto aqueles cujo nome começa com Kserã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, S23ntpserá executado (iniciado neste caso)antes S24dovecot.

Responder2

  1. Estes são runlevels e são uma iniciação no estilo System V usada pela maioria dos sistemas *NIX (com a notável exceção dos systemdsistemas baseados em -). Ao inicializar, o kernel/usuário decide o que runleveldeve ser executado e executa apenas isso runlevel. O que significa que dependendo de runlevelvocê 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.
  2. Como apenas um runlevelé executado na inicialização, alguns programas devem/desejam iniciar/parar em runlevelprogramas 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.
  3. Os números runlevelsão executados apenas uma vez na inicialização ou quando você altera o arquivo runlevel.
  4. ntpos scripts devem ser executados primeiro e depois dovecotno 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
  5. 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.

informação relacionada