Pesquisar neste blog

sexta-feira, 21 de novembro de 2008

Criando e colocando um scripts para inicializar automaticamente

Tenho visto que muita gente tem dificuldade na hora de colocar um serviço pra rodar na inicialização do linux, bom vou mostrar abaixo um exemplo bem simples de um script e como adicioná-lo no inicialização automática das distros equivalentes ao redhat.

Abaixo segue o script para inicialização do msn-proxy como exemplo, que foi compilado e instalado na mão, portanto não cria o script de inicialização no init do sistema.

#!/bin/sh

start (){
echo "Iniciando o MSN-Proxy"
/usr/local/bin/msn-proxy -b >> /dev/null
}
stop (){
echo "Finalizando o MSN-Proxy"
pkill -9 msn-proxy >> /dev/null
}

case "$1" in
start) start
;;
stop) stop
;;
*) echo "Uso: msn-proxy (startstop)"
;;
esac


Bom, mostrado o script acima agora vamos colocar ele pra inicializar automático.
Em primeiro lugar, existe uma pasta padrão nas distros derivadas do redhat onde devemos colocar os scripts, chamada init.d

Segue o caminho dela abaixo:
/etc/rc.d/init.d

Vamos copiar o script pra lá então:

[root@centos ~]# cp msn-proxy /etc/rc.d/init.d

Agora que copiamos, vamos adicionar o serviço no sistema com o comando chkconfig usando a seguinte sintaxe abaixo:

[root@centos ~]# chkconfig --add msn-proxy
O Serviço não suporta o chkconfig

Ops, acho que deu problema, porque será que o chkconfig não quer adicionar meu script. Bom, pesquisando na internet descobri que o chkconfig usa duas linhas de comentários para poder ser instalado, informando os runlevels e a descrição do sistema.

Aqui estão as duas linhas que você precisa informar em seu arquivo de inicialização:

# chkconfig: 345 99 10
# description: Msn-proxy

Agora vamos ao script novamente:

#!/bin/sh
# chkconfig: 345 99 10
# description: Msn-proxy


start (){
echo "Iniciando o MSN-Proxy"
/usr/local/bin/msn-proxy -b >> /dev/null
}
stop (){
echo "Finalizando o MSN-Proxy"
pkill -9 msn-proxy >> /dev/null
}

case "$1" in
start) start
;;
stop) stop
;;
*) echo "Uso: msn-proxy (startstop)"
;;
esac



Bom, agora sim vamos ao comando chkconfig

[root@centos ~]# chkconfig --add msn-proxy
Hum, agora sim deu certo, hehehe

Agora depois de adicionado ao sistema, vamos ativá-lo para inicializar, você pode fazer isso usando o comando abaixo:

[root@centos ~]# chkconfig msn-proxy on

ou escolher apenas o runlevel que quizer

[root@centos ~]# chkconfig --level 235 msn-proxy on

Para ter certeza que o serviço está instalado e em qual modo vai inicializar use o comando abaixo:

[root@centos ~]# chkconfig --listgrep msn-proxy


Pronto, agora sabemos como adicionar qualquer script na inicialização de distribuições derivadas do redhat usando o chkconfig.

[update]: 21/11/08- Uma colaboração do nosso colega Yucatan (Kenjiro)

Nem todas as distribuições Linux existentes utilizam o esquema de inicialização derivado do System V UNIX, o Slackware utiliza o conceito do BSD UNIX.

7 comentários:

Kenjiro disse...

Ae doutor! Nunca esquecendo que esse tipo de inicialização (via init.d) não rola em TODAS as distribuições. Só nas que são baseadas em Sys V.

Sim, o Slackware (e afins) desde a versão 12.1 tem o diretório init.d, porém não é padrão usá-lo. Bem como não existe o chkconfig.

A tua dica é totalmente válida, claro, mas ficam aí meu R$0,02 para alertar aqueles que costumam seguir à risca os tutorias que acham na internet ;)

anderrodrigo disse...

Cara...

Parabéns pelo comentário...

ficou muito claro

Anderson Rodrigo.

reginaldo disse...

Até que enfim achei alguem para resolver meu problema.
Valeuu!!!!

reginaldo disse...

Muito bomm , resolveu meu problema

Marcos Abadi disse...

Que bom Reginaldo, fico feliz em poder ajudar. No que precisar estamos ai.
Grande Abraço.

negociosnaweb disse...

Otimo artigo. Uso Mandriva e fiz conforme esta descrito e funcionou muito bem. Obrigado....

iguimar disse...

Muito obrigado pela dica. Ajudou bastante.