Você está na página 1de 22

Mudana de runlevels e

desligamento ou reinicializao
do sistema

www.4linux.com.br

-2

Sumrio
Captulo 1
Mudana de Runlevels............................................................................................................... 3
1.1. Objetivos......................................................................................................................... 3
1.2. Mos a obra.....................................................................................................................4
Captulo 2
Desligando e reiniciando o sistema............................................................................................9
2.1. Objetivos......................................................................................................................... 9
2.2. Mos a obra...................................................................................................................10
Captulo 3
Gerenciando ............................................................................................................................ 15
3.1. Objetivos....................................................................................................................... 15
3.2. Troubleshooting............................................................................................................ 16

ndice de tabelas
ndice de Figuras

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 3

Captulo 1
Mudana de Runlevels

1.1. Objetivos

Conhecer os runlevels do sistema;

Verifcar o runlevel;

Trocar o runlevel;

Desligar e reiniciar o servidor em modo seguro.

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 4

1.2. Mos a obra

Voc j deve ter se perguntado como o Sistemas Linux fazem para iniciar seus
programas. A resposta simples, basta apenas colocar o script dentro do diretrio do
runlevel correspondente. Vamos ver como isso possvel e como podem ser feitas as
mudanas de runlevel.
Mas o que um runlevel?
Um runlevel o nvel de inicializao do sistema. Em algumas distribuies
baseadas em Debian e RedHat, utilizam o padro SystemV. O Padro SystemV
constitudo em alguns pedaos. Na verdade, estes pedaos so camadas que
podemos utilizar para dizer quais servios vo iniciar a partir do boot do sistema.
O processo de inicializao feita da seguinte maneira, aps o Kernel estar
carregado na memria RAM, carregar os mdulos, tambm os dispositivos que esto
declarados dentro do arquivo /etc/fstab, junto com seus respectivos dispositivos
que esto declarados em /dev. Aps estas etapas temos o inicio do carregamento dos
servios no sistema.
Ento, na hora que o boot est sendo feito, antes dos servios serem iniciados,
temos que conhecer um diretrio muito importante para o sistema:
#

cd

/etc/init.d

ls

-l

Dentro do diretrio /etc/init.d/ fcam todos os daemons. Um daemon um


script que utilizado para dar start e stop em um servio, outros aceitam o
parmetro reload. Por exemplo:
#

/etc/init.d/exim4 stop

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 5


Ns estamos parando o servio Exim4, que um servio que trabalha na
porta 25 SMTP, ele um servidor de emails padro da distribuio Debian.
Ento podemos concluir que todos os scripts responsveis por iniciarem ou
pararem um determinado servio fcam localizados dentro diretrio /etc/init.d/, ele
um repositrio de daemons.
Quando o sistema inicializado, o SystemV ativado. Ento o primeiro arquivo
que ser lido o /etc/inittab. Este arquivo armazena em qual runlevel o sistema
ir inicializar:
#

head

/etc/inittab

Depois que ele l qual o nvel de inicializao ou runlevel que o sistema ir


inicializar na linha:
id:2:initdefault:

No padro de inicializao SystemV, encontramos cinco nveis (runlevels):

S Carrega os servios essenciais para o sistema;

0 Finaliza todos os servios e desliga;

1 Carrega os servios em modo mono-usurio;

2 5 Carrega os servios em modo multi-usurio;

6 Finaliza todos os servios e reinicia.


Na linha que estamos visualizando no arquivo /etc/inittab, podemos dizer

que nosso runlevel o 2. No s o runlevel do exemplo 2, mas o nvel de


inicializao padro do Debian o 2.
Ento depois de ler o arquivo /etc/inittab, o sistema carrega os servios que
esto dentro do diretrio /etc/rcS.d/, este diretrio sempre ser carregado, pois ele

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 6


armazena quais so os servios essenciais do sistema.
Por exemplo, nome da mquina, domnio, vamos entrar neste diretrio e
conhecer sua estrutura:
#

cd

/etc/rcS.d/

Quando listarmos seu contedo, vamos reparar muitos links apontando para o
diretrio /etc/init.d:
#

ls

-l

Ou seja, todos os scripts fcam dentro do diretrio /etc/init.d como havamos


visto acima. Isso muito bom, pois sabemos que o script sempre ir estar dentro
deste diretrio.
Aps ele carregar os servios essenciais, atravs do arquivo /etc/inittab ns
podemos perceber que o nvel de inicializao que estamos trabalhando o 2, para
podermos ver isso com agilidade, podemos executar o comando:
#

runlevel

Isso ir retornar o nmero 2, ento aps o carregamento dos scripts essenciais


que fcam localizados no diretrio /etc/rcS.d/, ele ir executar os scripts que esto
dentro do diretrio /etc/rc2.d, vamos visualizar:
#

cd

/etc/rc2/d

ls

-l

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 7


Podemos verifcar que eles so links e tambm apontam para o diretrio
/etc/init.d. Repare que temos scripts que comeam a letra S ou K:

S Sinal de start, o script ser inicializado;

K Sinal de stop, o script ser fnalizado.


Eles tambm recebem nmeros logo em seguida, por exemplo no caso do

exim4, o nome dele declarado como S20exim4, ento este servio ser o vigsimo a
ser inicializado no boot.
Pois ento, vamos fazer um teste. Agora que conhecemos como funciona o
modo com que o sistema faz para inicializar os servios, vamos observar o
que acontece quando brincamos com os runlevels j em execuo.

Verifque o runlevel que estamos utilizando:


#

runlevel

Vamos mudar para o nvel 1, observe:


# init 1

O comando init responsvel por mudanas de runlevel, veja:


#

runlevel

Verifque que estavamos no 2 agora estamos no 1, podemos trocar novamente


para 2:
#

init

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 8


Por exemplo, se quisermos desligar a mquina:
#

init

Mas se quisermos reiniciar a mquina:


#

init

Os diretrios deles, so respectivamente:


#

cd

/etc/rc0.d/

ls

-l

cd

/etc/rc6.d/

ls

-l

Para inicializar um servio podemos passar o PATH completo, ou colocar:


# invoke.rc exim4 start

No caso do Red Hat, podemos utilizar:


# service postfx start

Quando iremos incluir um novo script de inicializao no sistema, ele precisa estar
dentro do diretrio /etc/init.d, no Red Hat:
# chkconfg --add exim4

www.4linux.com.br

Captulo 1 Mudana de Runlevels - 9

Captulo 2
Desligando e reiniciando o sistema

2.1. Objetivos

Desligar o sistema de modo seguro;

Reiniciar o sistema de modo seguro;

Utilizar os principais comandos do sistema.

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 10

2.2. Mos a obra


Voc alguma vez viu algum desligando ou reiniciando a mquina puxando
o cabo, com o dedo, muitas vezes presenciamos estas e outras cenas. Para
que seu computador ou os servidores no tenham problemas, podemos
fazer isto de modo seguro.

Ento, para reiniciar a mquina de modo seguro, podemos utilizar o comando:


#

shutdown

-r

now

Essa opo now signifca agora, ento podemos reiniciar a mquina agora. O
comando shutdown tambm aceita outros argumentos. Podemos alm de dizer
now, podemos dizer os minutos que podem levar para que isto acontea. Por
exemplo, para desligar a mquina daqui 10 minutos:
#

shutdown

-r

10

Alm do comando shutdown para reinicializar a mquina, temos tambm o


comando:
#

reboot

Este comando guarda alguns detalhes. Quando utilizamos o comando reboot


o log do arquivo /var/log/wtmp armazena que a mquina foi reiniciada.
Verifque o tipo de arquivo que existe no sistema:
#

file

/var/log/wtmp

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 11


Este arquivo de log na verdade, a sada do comando:
#

last

Este comando, como voc pode reparar mostra os horarios que a mquina foi
reiniciado, desligada e logins que foram feitos no ultimo ms.
root
root
root
reboot
root
reboot
root
root
root
root

pts/0
tty1
tty1
system boot
pts/0
system boot
pts/0
tty1
tty1
pts/0

192.168.0.82

2.6.26-2-686
192.168.0.82
2.6.26-2-686
192.168.0.184

192.168.0.82

Tue
Tue
Tue
Tue
Tue
Fri
Fri
Fri
Fri
Tue

May
May
May
May
May
May
May
May
May
May

25
25
25
25
25
21
21
21
21
18

11:43
11:42
11:42
11:42
10:33
10:47
10:45
10:44
10:44
14:39

still logged
still logged
11:42
11:57
10:34
16:19
down
down
10:44
crash

Podemos reiniciar a mquina, sem que seja feito o log, assim:


#

reboot

-d

Com essa opo -d no ser gravado nenhum registro no wtmp.


Mas ao listarmos o comando reboot, verifcamos que ele um link para o
comando halt:
#

ls

-l

/sbin/reboot

lrwxrwxrwx 1 root root 4 Abr 15 16:08 /sbin/reboot -> halt

O comando halt utilizado para desligar a mquina, e tambm trabalha com


o wtmp, a opo -d do comando halt no envia o aviso para o wtmp.

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 12


Para desligar a mquina:
#

halt

Utilizando o comando shutdown, podemos trabalhar de forma similar. Para


desligar a mquina agora:
#

shutdown

-h

now

Para desligar daqui 10 minutos:


#

shutdown

-h 10

Em ambas as opes podemos mandar uma mensagem dizendo algo para os


usurios, esta mensagem enviada via console texto:
#

shutdown

-h

10

Estamos Desligando o Servidor

Mas se por uma emergncia, for necessrio cancelar o comando shutdown,


tanto com o -r do reboot, como no -h do halt, podemos enviar o sinal:
# shutdown -c
Shutdown cancelled.

Podemos enviar uma mensagem tambm:


#

shutdown

-c

Agora no, estou fazendo backup

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 13


A sada do comando ser mais ou menos assim:
Shutdown cancelled.
Broadcast message from root@lenny (pts/0) (Tue May 25 12:43:44 2010):
Agora no, estou fazendo Backup

Poxa, depois de uma explicao como essa, nunca mais d um dedoviske


ou dedada, tire o cabo do servidor. Utilize os comandos corretos para que
nunca ocorra problemas de recuperao do sistema.

No modo grfco no poderia ser diferente. No Debian, por exemplo:

Esta a nossa distro ofcial. Mas no podemos esquecer que as pessoas so


livre para utilizar o que bem entenderem.

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 14


No CentOS:

Trabalhando como o modo grfco, possivl utilizar programas para


gerenciar o boot do sistema:
Kshutdown (Para KDE)
Gshutdown (Para GNOME)

www.4linux.com.br

Captulo 2 Desligando e reiniciando o sistema - 15

Captulo 3
Gerenciando

3.1. Objetivos

Inicializar e parar servios com ferramentas;

Deixar scripts incivilizveis.

www.4linux.com.br

Captulo 3 Gerenciando - 16

3.2. Troubleshooting
Imagine a seguinte situao: Seu chefe pede pra voc colocar o script do
frewall para inicializar a partir do boot. Como voc faria isso?

Lembrando do que estudamos acima, vimos que o repositrio de todos os


daemons do sistema fca dentro:
#

cd

/etc/init.d

Dentro dele vamos criar um arquivo e atribuir permisso de execuo ao


arquivo:
#

touch

firewall

chmod

+x

firewall

Estamos utilizando o runlevel 2, ento podemos ver que a simples existncia


do arquivo frewall dentro do diretrio /etc/init.d/ no sufciente para ele se
tornar incivilizvel.
#

runlevel

cd

/etc/rc2.d

ls

-l

Podemos incluir ele no boot do sistema assim:


#

update-rc.d

firewall

defaults

www.4linux.com.br

Captulo 3 Gerenciando - 17
Repare a sada do comando:
Adding system startup for
/etc/rc0.d/K20firewall
/etc/rc1.d/K20firewall
/etc/rc6.d/K20firewall
/etc/rc2.d/S20firewall
/etc/rc3.d/S20firewall
/etc/rc4.d/S20firewall
/etc/rc5.d/S20firewall

/etc/init.d/firewall ...
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall

Por padro, ele diz que nos runlevels onde encontramos servios correntes,
ser o vigsimo script a ser inicializado quando a letra por S, ou encerrado
quando a letra for K.
Podemos mudar isso, ento poderamos executar:
#

update-rc.d

firewall

defaults

99

30

Repare a sada do comando:


Adding system startup for
/etc/rc0.d/K30firewall
/etc/rc1.d/K30firewall
/etc/rc6.d/K30firewall
/etc/rc2.d/S99firewall
/etc/rc3.d/S99firewall
/etc/rc4.d/S99firewall
/etc/rc5.d/S99firewall

/etc/init.d/firewall ...
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall
-> ../init.d/firewall

Agora ser o nonagsimo script a ser inicializado quando a letra por S, e


quando for encerrado quando a letra for K ser o trigsimo.

www.4linux.com.br

Captulo 3 Gerenciando - 18
Mas vamos remover os links, e fazer de outra maneira:
#

update-rc.d

-f

firewall

remove

Lembre-se que s est funcionando porque o suposto script frewall se


encontra dentro do diretrio /etc/init.d.

Vamos utilizar um utilitrio no Debian que serve para trabalhar com os scripts.
Para isso vamos utilizar o comando aptitude:
# aptitude install rcconf

Antes de testarmos vamos remover o script do CRON dos runlevels, para


nossos testes:
#

update-rc.d

-f

cron

remove

O cron o servio de agendador de tarefas do sistema. No esqueam que


temos dois tipos, temos o agendamento por usurio e feito pelo sistema.
Cuidado para no testar isso em um ambiente em que esteja rodando
alguma coisa importante no exato momento em que retirar o daemon.

Verifque os trabalhos agendados por usurios e pelo sistema:


#

crontab

-l

crontab

-l

cat

usuario

/etc/crontab

www.4linux.com.br

Captulo 3 Gerenciando - 19
Agora iremos trabalhar com o rcconf. Para executar:
# rcconf

Ele ir abrir sua interface, que nada mais do que todos os scripts que esto
dentro do diretrio /etc/init.d:

Repare que o cron e o frewall no esto marcados por um *


Isso signifca que no esto vinculados a nenhum runlevel.

www.4linux.com.br

Captulo 3 Gerenciando - 20
Vamos marcar o frewall com * para testar. Marque usando a tecla espao,
aperte o tab e clique em OK. Aps isso, verifque onde ele est:
#

find

/etc

-name

S20firewall

Lembre-se que vinte o nmero padro atribuido. Ento sua sada ser:
/etc/rc4.d/S20firewall
/etc/rc3.d/S20firewall
/etc/rc5.d/S20firewall
/etc/rc2.d/S20firewall

Ou seja, qualquer um dos runlevels que iremos trabalhar, poderemos


encontrar o sript do frewall.

Mas existe um comando que pode ser um pouco mais efcaz na hora de
trabalhar com servios em nosso dia-a-dia, vamos instalar:
# aptitude install sysv-rc-conf

Para executar este programa:


# sysv-rc-conf

Veja a descrio do pacote no site sourceforge:


http://sysv-rc-conf.sourceforge.net/

www.4linux.com.br

Captulo 3 Gerenciando - 21
Ir aparecer:

A grande vantagem que podemos escolher em qual runlevel ou quais


runlevels meu script ir executar. Em termos de segurana isso muito
bom, pois nas mudanas de runlevel, sabemos em quais iro funcionar.

No esquea que o runlevel padro no Debian o 2. E se encontra dentro


do diretrio /etc/rc2.d/. Para alterar precisamos editar o arquivo
/etc/inittab na linha id:2:initdefault:.
www.4linux.com.br

Captulo 3 Gerenciando - 22
Quando trabalhamos com distros baseadas em Red Hat, utilizamos:
# ntsysv

No modo grfco:

www.4linux.com.br

Você também pode gostar