6.5. Inicializando Serviços

Hospedar vários serviços é comum para um sistema. Eles podem ser inicializados de formas diferentes, cada um com suas vantagens.

Aplicativos instalados através do port ou da coleção de pacotes frequentemente colocará um script em /usr/local/etc/rc.d, que será invocado na inicialização do sistema com o argumento start, e no desligamento do sistema com o argumento stop. Esta é a maneira recomendada de incializar serviços globais de sistema que são executados sob o usuário root, ou que esperam ser inicializados como root. Estes scripts são registrados como parte da instalação do pacote, e serão removidos quando o pacote for removido.

Um script genérico de inicialização em /usr/local/etc/rc.d seria parecido com:

#!/bin/sh
echo -n ' FooBar'

case "$1" in
start)
    /usr/local/bin/foobar
    ;;
stop)
    kill -9 `cat /var/run/foobar.pid`
    ;;
*)
    echo "Usage: `basename $0` {start|stop}" >&2
    exit 64
    ;;
esac

exit 0
   

O script de inicialização do FreeBSD procurará em /usr/local/etc/rc.d por scripts que possuem a extensão .sh e são executáveis pelo root. Estes scripts encontrados são chamados com o argumento start na inicialização, e stop no desligamento, para permitir que executem suas funções. Sendo assim, se você desejar que o script de exemplo acima seja selecionado e executado no momento de incialização do sistema, você deve gravá-lo em um arquivo, como por exemplo FooBar.sh em /usr/local/etc/rc.d e ter certeza de que ele é executável. Você pode fazer com que um script executador de comandos seja executável com o chmod(1) como mostrado abaixo:

# chmod 755 FooBar.sh

Alguns serviços esperam ser invocados pelo inetd(8) quando uma conexão é recebida em uma porta disponível. É comum para servidores de correio (POP e IMAP, etc). Estes serviços são habilitados editando-se o arquivo /etc/inetd.conf. Veja inetd(8) para detalhes de como editar este arquivo.

Alguns serviços de sistema adicionais podem não possuir entradas no arquivo /etc/rc.conf. Estes serviços são tracidionamente habilitados incluindo-se comandos no arquivo /etc/rc.local. Como no FreeBSD 3.1 não existe o arquivo /etc/rc.local; mas se for criado pelo administrador ele será executado pelo sistema. Note que o arquivo rc.local é geralmente considerado como um local de último recurso; se existir um lugar melhor para inicializar o serviço, coloque o script neste lugar melhor.

Nota: Não coloque qualquer comando no arquivo /etc/rc.conf. Para inicializar daemons, ou executar qualquer comando durante a inicialização, coloque um script em /usr/local/etc/rc.d.

Também é possível usar o daemon cron(8) para inicializar serviços de sistema. Este método tem algumas vantagens, não é para menos, pois o cron(8) executa estes processos sob o proprietário do crontab, e os serviços podem ser inicializados e mantidos por usuários não-root.

Isto tira vantagem de uma característica do cron(8): a especificação de tempo pode ser trocada por @reboot, que fará com que o trabalho seja executado quando o cron(8) for inicializado logo após a inicialização do sistema.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.