Níveis de inicialização no Linux

Os níveis de execução definem como o Sistema Operacional (SO) inicializará; o Linux possui 7 níveis que vão de 0 a 6, e diferem de distro para distro.

Falando sobre os níveis, eles permitem que eu escolha quais serviços vão iniciar ou não em cada nível; em geral, os daemons de inicialização dos serviços ficam localizados dentro de /etc/init.d.

Cada script do diretório /etc/init.d é escrito para aceitar argumentos como start, stop, restart, status e pode ser executado manualmente caso seja necessário.

Por exemplo, para parar, iniciar e restartar o daemon ssh:

# /etc/init.d/ssh stop
# /etc/init.d/ssh start
# /etc/init.d/ssh restart

O importante agora é saber onde ficam os daemons dos serviços que temos instalados na máquina e que são esses daemons os responsáveis por iniciar ou não um determinado serviço no Linux.

E um outro ponto importante, é que, quem decide quais dos serviços que estão no /etc/init.d vão iniciar quando o Linux estiver inicializando, é o administrador do sistema (você! 😀 ).

Isso quer dizer que, podemos em um runlevel iniciar o serviço SSH e em outro esse serviçõ não irá iniciar (ficará desligado).

Como disse anteriormente, o Linux possui 7 níves de inicialização:
Niveis de inicializacao em diversas distros

Nos meus posts, vou falar sobre Debian, mas achei legal a tabela por mostrar como são utilizados os níveis em outras distribuições.

Na tabela acima, temos os 7 runlevels, que são definidos no /etc/inittab; uma coisa que é importante falar, é que cada runlevel possui seu próprio diretório, localizado dentro de /etc. Vejam:

# ls -d /etc/rc?.d
/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d

Onde no comando acima:

-d => o comando ls irá listar somente os diretórios

/etc/rc?.d => irá listar os diretórios que comecem com rc com qualquer caracter onde esta o ‘?’.

Vejam que na saída do comando acima, temos todos os runlevels de 0 a 6 e ainda aparece o rcS.d. Esse runlevel, rcS.d, é utilizado por programas que são executados durante o início do nível 1.

Bem, mas agora vem a pergunta… “Como sei qual nível meu sistema inicia“?

O comando que mostra qual nível o sistema iniciou é o runlevel:

# runlevel
N 2

Acima, podemos ver que o sistema inicia no nível 2; lembrando que por padrão, sistemas Debian tem como padrão o nível 2.

Sabendo qual nível o sistema inicia, basta consultar o diretório correspondente ao nível, que no caso é o /etc/rc2.d.

Exemplo:

# ls /etc/rc2.d/
K89cron S10sysklogd S11klogd S20acpid S20gpm S20makedev S20openbsd-inetd S20ssh S99rc.local S99rmnologin S99stop-bootlogd

Ah, e um detalhe: os arquivos do diretório, na verdade são links que apontam para os serviços que estão em /etc/init.d. Quer conferir se isso é verdade? Basta executar:

# ls -l /etc/rc2.d

Bom, voltando ao que estava falando sobre o os arquivos do /etc/rc2.d, dentro desse diretório temos arquivos que começam assim: SXXnome ou KXXnome. Aqui temos as seguintes regras:

✔ Se um link é iniciado com a letra K (kill), quer dizer que o serviço será interrompido naquele nível de execução. A função do K é executar o serviço em /etc/initd.d seguido de stop.

✔ Se um link é iniciado com a letra S (start), quer dizer que o serviço será iniciado naquele nível de execução. A função do S é executar o serviço em /etc/initd.d seguido de start.

Por exemplo, quando você instala algum serviço na máquina, o daemon é colocado dentro de /etc/init.d e é criado um link para que o inicie nos runlevels de 2 a 5. Afinal de contas, o Linux entende que se você está instalando, por certo deve querer que o serviço inicie 😀 !

Mas pode acontecer também de você não instalar, e sim o pacote da distribuição instala como padrão, e você nem usa o serviço!

Vamos ver o serviço cron. Ainda não falei sobre ele em nenhum post, então não vou detalhar aqui… eu falo dele em outro post! A função do cron é agendar tarefas… mas imaginando que você não vai usá-lo, vamos tirá-lo da inicialização.

Para isso, vamos no runlevel que inicia por padrão na máquina (use o comando runlevel para saber o padrão):

# runlevel
N 2

Em seguida, vamos no diretório do runlevel e listamos o serviço cron:

# cd /etc/rc2.d
# ls -l | grep cron
lrwxrwxrwx 1 root root 14 2008-11-16 21:52 S89cron -> ../init.d/cron

Vejam que o cron está com o ‘S’ na frente… isto é, ele vai iniciar no nível 2 a cada boot! Para não iniciar mais, vamos trocar o ‘S’ por ‘K’:

# mv S89cron K89cron
`S89cron’ -> `K89cron’

Acima estamos movendo o cron que estava S (start) para K (kill). E depois, só checando para ver se está tudo certo:

# ls -l | grep cron
lrwxrwxrwx 1 root root 14 2008-11-16 21:52 K89cron -> ../init.d/cron


Vejam que agora, o serviço cron, não irá iniciar após o boot… e aqui, tem um detalhe… do lado do S e do K, existe o número 89… uma vez que o S é o start, K é kill e cron é o nome… prá que o número?

Os números são a ordem que os serviços irão iniciar! Primeiro, são executados links com a letra K e depois com S. A ordem que os serviços são executados depende do número que segue a letra K ou S; e, se houver dois serviços com o mesmo número, será iniciado em ordem alfabética.

Incrível isso, não 😀 ?

3 Responses to “Níveis de inicialização no Linux”


  1. 1 Etevaldo 13/08/2009 às 8:49 AM

    mto bom cara, ótima explicação

  2. 2 Jackison Iury Vidal de Sousa 14/03/2013 às 2:00 PM

    Muito boa suas infomações,parabéns!
    Continue postando sempre informações tão simples mais que fazem muita diferença!

  3. 3 Alexandre Lima 25/08/2016 às 5:07 PM

    Perfeita a explicação! Obrigado pelas informações!!!


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
dezembro 2008
S T Q Q S S D
« nov   jan »
1234567
891011121314
15161718192021
22232425262728
293031  

Flickr Photos

Dutch Classic

Mais fotos

%d blogueiros gostam disto: