6.7. Usando rc no FreeBSD 5.X

Contribuição de Tom Rhodes.

O FreeBSD recentemente integrou o sistema de inicialização rc.d do NetBSD. Os usuários podem notar os arquivos no diretório /etc/rc.d. Muitos destes arquivos são para serviços básicos que podem ser controlados com os parâmetros start, stop, e restart. Por exemplo, o sshd(8) pode ser reinicializado com o seguinte comando:

# /etc/rc.d/sshd restart

Este procedimento é similar para outros serviços. Claro, serviços que normalmente são inicializados como especificado em rc.conf(5). Por exemplo, habilitar o daemon Network Address Translation na inicialização basta adicionar a seguinte linha em /etc/rc.conf:

natd_enable="YES"

Se a linha natd_enable="NO" já existe, então simplesmente mude a opção NO para YES. Os scripts rc automaticamente carregarão outros serviços dependentes durante a próxima inicialização, como descrito abaixo.

Uma vez que o sistema rc.d foi feito primariamente para iniciar/parar serviços na ocasião de inicialização/desligamento do sistema; os parâmetros start, stop e restart somente cumprirão suas funções se as variáveis apropriadas estiverem configuradas no /etc/rc.conf. Por exemplo, o comando sshd restart acima só funcionará se sshd_enable estiver configurado para YES no /etc/rc.conf. Para iniciar (start), parar (stop) ou reiniciar (restart) um serviço, independente das configurações em /etc/rc.conf, os comandos devem ter o prefixo ``force''. Por exemplo, para reiniciar o sshd independente da configuração atual no /etc/rc.conf, execute o seguinte comando: :

# /etc/rc.d/sshd forcerestart

É fácil verificar se um serviço está habilitado no /etc/rc.conf, basta executar o script rc.d com o parâmetro rcvar. Desta forma, o administrador pode verificar se o sshd está de fato habilitado no /etc/rc.conf:

# /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YES

Nota: A segunda linha (# sshd) é a saída do comando sshd; não um console root.

Para determinar se o serviço está no ar, use o parâmetro status. Por exemplo, para verficar se o sshd está no ar:

# /etc/rc.d/sshd status
sshd is running as pid 433.

Também é possível recarregar (reload) um serviço. Este parâmetro tentará enviar um sinal para um serviço em particular, forçando uma recarga dos arquivos de configuração. Em muitos casos isto significa enviar um sinal SIGHUP para o serviço.

A estrutura do rcNG não é apenas usada para serviços de rede, também contribui em grande parte para a inicialização do sistema. Por exemplo, considere o arquivo bgfsck. Quando este script for executado imprimirá a seginte mensagem:

Starting background file system checks in 60 seconds.

Portanto, este arquivo é usado para checagem do sistema de arquivos em segundo plano, que é feita durante a inicialização.

Muitos serviços de sistema dependem de outros seviços para funcionar corretamente. Por exemplo, NIS e outros serviços baseados em RPC podem falhar durante a inicialização até que o serviço rpcbind (portmapper) tenha sido iniciado. Para resolver esta questão, informações sobre dependência e outros meta-dados estão incluídos no topo de cada script de inicialização. O programa rcorder(8) é usado para analisar estes comentários durante a inicialização do sistema para determinar a ordem na qual os serviços de sistema devem ser invocados para satisfazer as dependências. As seguintes palavras podem ser incluidas no topo de cada arquivo de script de inicialização:

Usando este método, um administrador pode controlar facilmente os serviços de sistema sem o stress dos ``runlevels'' como em outros sistemas operacionais UNIX®.

Informações adicionais sobre sistema rc no FreeBSD 5.X podem ser encontradas em rc(8) e rc.subr(8).

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>.