FreeBSD

Inicialização e Finalização de Daemons


Para inicializar e finalizar os daemons, nos momentos de boot e shutdown, respectivamente, o procedimento mais recomendado é colocar scripts no diretório /usr/local/etc/rc.d. Esses scripts devem possuir a extensão .sh (apenas .sh), devem ser executáveis (permissão 700) e precisam aceitar dois argumentos: start e stop.

Quem gerencia estes procedimentos no boot e no shutdown é o RC, é interessante sabermos como funciona, para isso pode ser consultado o seu manual, com o comando "man rc". Deste manual foi retirado e adaptado o exemplo de script abaixo, que deve ser copiado e customizado para cada novo serviço que for instalado. Crie um arquivo /usr/local/etc/rc.d/exemplo.sh.sample com o conteúdo abaixo, desta forma o teremos sempre disponível:

-------------------- Arquivo exemplo.sh.sample --------------------
#!/bin/sh -
#
# Script de Inicializacao e Shutdown
# Nome_do_Programa

case "$1" in
start)
/comando/para/iniciar/o/programa && echo -n ' Nome_do_Programa'
;;
stop)
/comando/para/parar/o/programa && echo -n ' Nome_do_Programa'
;;
*)
echo "Opcao desconhecida: $1 - deve ser 'start' ou 'stop'" >&2
;;
esac

-------------------- Fim do arquivo exemplo.sh.sample --------------------

O comando para inicializar o programa pode conter parâmetros, se necessário. Pode ser algo como

/usr/local/sbin/proftpd

ou

/usr/sbin/postfix start

O comando para terminar o programa também pode conter parâmetros, e pode ser um comando específico do daemon, um kill ou até mesmo um killall. Exemplos:

/usr/sbin/postfix stop

kill `cat /usr/local/var/proftpd.pid`

killall proftpd


Mantenha este arquivo de exemplo com a permissão 600 e a extensão .sample, desta forma ele não será executado acidentalmente e nem na inicialização ou shutdown do sistema.

A seqüência de execução dos scripts segue a ordem alfabética. Desta forma, se for necessário que algum script seja executado antes do outro, podemos colocar números na frente dos nomes, estabelecendo a ordem.

 

Atualizado em 03/02/04.

Heini Thomas Geib.
http://www2.unijui.edu.br/~heini

Voltar