22
Mudança de runlevels e desligamento ou reinicialização do sistema www.4linux.com.br

Mudança de Runlevels e desligamento do sistema.pdf

Embed Size (px)

Citation preview

  • Mudana de runlevels e

    desligamento ou reinicializao do sistema

    www.4linux.com.br

  • - 2

    SumrioCaptulo 1 Mudana de Runlevels............................................................................................................... 3

    1.1. Objetivos......................................................................................................................... 31.2. Mos a obra.....................................................................................................................4

    Captulo 2 Desligando e reiniciando o sistema............................................................................................9

    2.1. Objetivos......................................................................................................................... 92.2. Mos a obra...................................................................................................................10

    Captulo 3 Gerenciando ............................................................................................................................ 15

    3.1. Objetivos....................................................................................................................... 153.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 2

    www.4linux.com.br

  • Captulo 1 Mudana de Runlevels - 8

    Por exemplo, se quisermos desligar a mquina:

    # init 0

    Mas se quisermos reiniciar a mquina:

    # init 6

    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 pts/0 192.168.0.82 Tue May 25 11:43 still logged

    root tty1 Tue May 25 11:42 still logged

    root tty1 Tue May 25 11:42 - 11:42

    reboot system boot 2.6.26-2-686 Tue May 25 11:42 - 11:57

    root pts/0 192.168.0.82 Tue May 25 10:33 - 10:34

    reboot system boot 2.6.26-2-686 Fri May 21 10:47 - 16:19

    root pts/0 192.168.0.184 Fri May 21 10:45 - down

    root tty1 Fri May 21 10:44 - down

    root tty1 Fri May 21 10:44 - 10:44

    root pts/0 192.168.0.82 Tue May 18 14:39 - 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/init.d/firewall ...

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

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

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

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

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

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

    /etc/rc5.d/S20firewall -> ../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/init.d/firewall ...

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

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

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

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

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

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

    /etc/rc5.d/S99firewall -> ../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 usuario

    # cat /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

    Captulo 1 Mudana de Runlevels1.1. Objetivos1.2. Mos a obraCaptulo 2 Desligando e reiniciando o sistema2.1. Objetivos2.2. Mos a obraCaptulo 3 Gerenciando 3.1. Objetivos3.2. Troubleshooting