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

27

Estou executando o Ubuntu no qual 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

Perguntas:

  1. Qual é o objetivo dos vários diretórios "rc"?
  2. Por que o Ubuntu instalou duplicatas de dovecot e ntp em todos os diretórios, exceto rc0.d e rc6.d ?
  3. Se forem especificados várias vezes como acima, eles serão realmente executados várias vezes?
  4. Você pode dizer a partir do acima em qual ordem dovecot e ntp serão executados na inicialização?
  5. Qual é a maneira correta de dizer ao Ubuntu para sempre executar ntp antes de dovecot na inicialização?
por roger.james 20.07.2013 / 15:06

3 respostas

22
  1. São runlevel s e são iniciações no estilo System V usadas pela maioria dos sistemas * NIX (com a exceção notável dos sistemas systemd -based). Ao inicializar o kernel / usuário, decide qual runlevel deve ser executado e executa apenas runlevel . Isso significa que, dependendo do runlevel , você pode inicializar com um conjunto diferente de programas. Existem runlevels para parar e reiniciar também, mas como você está se concentrando na parte de inicialização, vamos ignorá-los por enquanto.
  2. Como somente um runlevel é executado na inicialização, alguns programas devem / querem iniciar / parar em diferentes runlevel s com parâmetros diferentes ou iguais na mesma ordem ou diferente (nem todos os níveis de execução são iguais em todos os sistemas operacionais) ). Mas o Ubuntu copia os níveis 3-5 de 2, e é por isso que eles são os mesmos.
  3. Não. runlevel s são executados apenas uma vez na inicialização ou quando você altera runlevel .
  4. ntp scripts devem ser executados primeiro, em seguida, dovecot no runlevel 2-5, não no caso do nível de execução 1. O número ordinal nos nomes de script ( S23ntp ) indica a ordem de execução. Então, tudo depende do nível de execução que você está usando.
  5. Depende da Distro, mas no caso particular do Ubuntu você pode adicionar seu script ao runlevel 1 e 2.

Mais informações no artigo Wikipedia sobre runlevels do Ubuntu

    
por 20.07.2013 / 16:03
34

Como outros observaram, a resposta é toda sobre runlevels , que 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 diretórios rcX contém os scripts que devem ser executados nos diferentes níveis de execução. Esses scripts não são instalados várias vezes, cada entrada em um dos rcX s é apenas um link para o script real que normalmente está no diretório /etc/init.d :

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

Agora, o esquema de nomenclatura também é bastante simples. Scripts cujo nome começa com S serão iniciados no nível de execução em questão, enquanto aqueles cujo nome começa com K serão eliminados. Observe que todos os scripts em rc6.d , o nível de execução da 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 referem-se à ordem de execução dos scripts. 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) antes S24dovecot .

    
por 20.07.2013 / 16:21
4

1) Os múltiplos 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 é o desligamento. rc6.d é para reinicializar. Resto todos são para runlevels diferentes (2 - 5). O S significa início e K por 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 / mortos.

3) Sim, se forem especificados várias vezes, o script start / kill será executado várias vezes. Mas ninguém quer fazer isso.

4) Olhando para os números de prioridade, o serviço ntp será iniciado primeiro seguido pelo dovecot.

5) O 4º ponto é o caminho.

    
por 20.07.2013 / 15:58