Strict Standards: Non-static method themeGluedIdeas_Subtle::initOptions() should not be called statically in /home/riopro/www/blog.riopro.com.br/wp-content/themes/gluedideas_subtle/header.php on line 19
Riopro Blog - » Inicialização de serviços no Linux - parte I

Inicialização de serviços no Linux - parte I



Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

O Linux, tal como outros sistemas operacionais Unix-like possui um mecanismo para iniciar e finalizar aplicações de serviço (também chamados daemons). Esse mecanismo é denominado Runlevel. Usualmente, os Runlevels possuem uma numeração de 0 (zero) a 6 (seis). O zero é para parar todos os serviços (desligamento da máquina), o 1 é o modo de segurança (Single-use mode), o 3 é para a inicialização normal, o 5 é igual ao 3 com o acréscimo de um gerenciador de janelas (normalmente o X Windows) e o 6 é para o reboot da máquina. Normalmente as pessoas tem facilidade de compreender a existência de um sistema de ativação dos daemons, mas não do desativamento dos mesmos. Separei esse artigo em 2 partes, sendo esta uma parte mais introdutória e a parte 2 explicando o uso do update-rc.d.

O fato de existirem os Runlevels 0 e 6 não quer dizer que tenhamos que listar todos os processos que devemos parar. O Linux sabe quais são os seus processos ativos e necessariamente vai para-los antes de desligar (através do comando kill). O que esses Runlevels fazem ao desligar os serviços é permitir que você possa dizer qual a ordem de desligamento dos seus daemons maiks importantes e, principalmente, possa garantir aqueles serviços que necessitarem de atenção especial vão ser desligados da forma apropriada. Garantir um desligamento apropriado é muito importante, por exemplo, para serviços de bancos de dados (SGBD). Imagine se toda vez que tivessemos que reiniciar o servidor derrubassemos o SGBD no meio de uma transação.

Agora que falamos sobre as linhas gerais, vamos ao ponto principal: como usamos isso! Para começar, os serviços devem possuir um script de inicialização na pasta /etc/init.d (como estamos falando de um sistema Unix-like, você pode colocar na pasta um link para seu script ao invés do script em si). Os scripts de serviços devem aceitar parâmetros, vamos usar como exemplo o Postfix:

$sudo /etc/init.d/postfix start
$sudo /etc/init.d/postfix stop
$sudo /etc/init.d/postfix status

E outros como restart, flush, check. São várias possibilidades, inclusive pode-se inventar um checkup-completo, mas duas são obrigatórias: start e stop. São esses dois que vão ser usados pelo Runlevel para iniciar e parar os serviços.

Vamos, então, usar o exemplo anterior para criar a inicialização do serviço de e-mail na inicialização normal (que já vimos, é a 3). Nesse caso, fariamos um link simbólico (symlink) do script /etc/init.d/postfix na pasta do Runlevel 3 (mais uma vez usamos o link ao invés da cópia pura e simples para não ficarmos replicando scripts de inicialização). Fariamos, então:

$sudo ln -s /etc/init.d/postfix /etc/rc3.d/S90postfix

Vamos aos detalhes desse link, o S indica que o comando é de start. Se quisessemos parar o serviço, o link teria a letra K. O nome postfix (que poderimos ter chamado Postfix ou POSTFIX) é só uma convençao para facilitar a identificação.

O número 90 logo a seguir reflete a precedência da inicialização. Como já dito anteriormente é bastante importante para garantir a precedência das dependências. Imagine que seu servidor de e-mail (MTA) faça autenticação dos usuários num servidor de banco de dados como o Mysql (é, o Postfix permite isso). Nesse caso, você óbviamente vai querer garantir que o SGBD inicie antes do seu MTA. Isso é feito através da numeração dos symlinks. Ou seja, o link S89 vai ser chamado antes do link S90.

É isso. No próximo artigo explicaremos como o update-rc.d pode agilizar a criação dos seus serviços.

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Artigos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Inicialização de serviços no Linux - parte II

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Configurando o Acesso Seguro no Tomcat

Comente

Tire um tempo para comentar e nos dizer o que você acha. Alguns códigos HTML são permitidos para formatação.

Comentários dos Leitores


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Gostei bastante do artigo. Bem didatico e objetivo.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Obrigado Fabio. Creio que ficou legal.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Bom artigo, muito bem explicado.