O FreeBSD usa o sistema rc(8) de scripts de inicialização durante a inicialização do sistema e para gerenciar serviços. Os scripts listados em /etc/rc.d
fornecem serviços básicos que podem ser controlados com start
, stop
e restart
opções para service(8). Por exemplo, sshd(8) pode ser reiniciado com o seguinte comando:
#
service sshd restart
Este procedimento pode ser usado para iniciar serviços em um sistema em execução. Os serviços serão iniciados automaticamente no momento da inicialização, conforme especificado em rc.conf(5). Por exemplo, para ativar o natd(8) na inicialização do sistema, adicione a seguinte linha ao /etc/rc.conf
:
natd_enable="YES"
Se uma linha natd_enable="NO"
já estiver presente, altere o NO
para YES
. Os scripts rc(8) carregarão automaticamente todos os serviços dependentes durante a próxima inicialização, conforme descrito abaixo.
Como o sistema rc(8) é destinado principalmente a iniciar e parar serviços na inicialização do sistema e no tempo de desligamento, o start
, as opções stop
e restart
somente executarão suas ações se a variável apropriada estiver configurada no /etc/rc.conf
. Por exemplo, o sshd restart
só funcionará se sshd_enable
estiver definido como YES
em /etc/rc.conf
. Para iniciar
, parar
ou reiniciar
um serviço independente das configurações em /etc/rc.conf
, estes comandos deve ser prefixado com “one”. Por exemplo, para reiniciar sshd(8) independentemente da configuração atual do /etc/rc.conf
, execute o seguinte comando:
#
service sshd onerestart
Para verificar se um serviço está habilitado em /etc/rc.conf
, execute o script apropriado rc(8) com rcvar
. Este exemplo verifica se o sshd(8) está habilitado no /etc/rc.conf
:
#
service sshd rcvar
# sshd # sshd_enable="YES" # (default: "")
A linha # sshd
é gerada pelo comando acima, não pelo console do root
.
Para determinar se um serviço está ou não em execução, use status
. Por exemplo, para verificar se o sshd(8) está em execução:
#
service sshd status
sshd is running as pid 433.
Em alguns casos, também é possível fazer o reload
denum serviço. Isso tenta enviar um sinal para um serviço individual, forçando o serviço a recarregar seus arquivos de configuração. Na maioria dos casos, isso significa enviar ao serviço um sinal SIGHUP
. O suporte para esse recurso não está incluído para todos os serviços.
O sistema rc(8) é usado para serviços de rede e também contribui para a maior parte da inicialização do sistema. Por exemplo, quando o script /etc/rc.d/bgfsck
é executado, ele imprime a seguinte mensagem:
Starting background file system checks in 60 seconds.
Esse script é usado para verificações do sistema de arquivos em segundo plano, que ocorrem apenas durante a inicialização do sistema.
Muitos serviços do sistema dependem de outros serviços para funcionar corretamente. Por exemplo, o yp(8) e outros serviços baseados em RPC podem falhar ao iniciar até que o rpcbind(8) seja iniciado. Para resolver esse problema, informações sobre dependências e outros meta-dados são incluídas nos comentários na parte superior de cada script de inicialização. O programa rcorder(8) é usado para analisar esses comentários durante a inicialização do sistema para determinar a ordem na qual os serviços do sistema devem ser invocados para satisfazer as dependências.
A seguinte palavra-chave deve ser incluída em todos os scripts de inicialização, conforme exigido pelo rc.subr(8) para “habilitar” o script de inicialização:
PROVIDE
: Especifica os serviços que este arquivo fornece.
As seguintes palavras-chave podem ser incluídas na parte superior de cada script de inicialização. Eles não são estritamente necessárias, mas são úteis como sugestões para rcorder(8):
REQUIRE
: lista os serviços necessários para este serviço. O script que contém esta palavra chave será executado após os serviços especificados.
BEFORE
: lista os serviços que dependem deste serviço. O script que contém esta palavra chave será executado antes dos serviços especificados.
Ao definir cuidadosamente essas palavras-chave para cada script de inicialização, um administrador passa a ter um nível refinado de controle da ordem de inicialização dos scripts, sem a necessidade dos “runlevels” usados por alguns sistemas operacionais UNIX®.
Informações adicionais podem ser encontradas em rc(8) e rc.subr(8). Consulte este artigo para obter instruções sobre como criar um script rc(8) personalizado.
A localização principal das informações de configuração do sistema é arquivo /etc/rc.conf
. Este arquivo contém uma ampla gama de informações de configuração e é lido na inicialização do sistema para configurar o sistema. Ele fornece as informações de configuração para os arquivos rc*
.
As entradas em /etc/rc.conf
substituem as configurações padrões em /etc/defaults/rc.conf
. O arquivo contendo as configurações padrões não deve ser editado. Ao invés disso, todas as alterações específicas do sistema devem ser feitas em /etc/rc.conf
.
Várias estratégias podem ser aplicadas em aplicativos em cluster para separar as configurações que afetam todo o site da configuração específica do sistema para reduzir a sobrecarga de administração. A abordagem recomendada é colocar a configuração específica do sistema em /etc/rc.conf.local
. Por exemplo, estas entradas em /etc/rc.conf
aplicam-se a todos os sistemas:
sshd_enable="YES" keyrate="fast" defaultrouter="10.1.1.254"
Considerando que estas entradas em /etc/rc.conf.local
se aplicam somente a este sistema:
hostname="node1.example.org" ifconfig_fxp0="inet 10.1.1.1/8"
Distribua o /etc/rc.conf
para cada sistema usando um aplicativo como o rsync ou o puppet, enquanto o /etc/rc.conf.local
permanece único.
A atualização do sistema não sobrescreverá o /etc/rc.conf
, portanto as informações de configuração do sistema não serão perdidas.
Ambos /etc/rc.conf
e /etc/rc.conf.local
são analisados pelo sh(1). Isto permite que os operadores do sistema criem cenários de configuração complexos. Consulte rc.conf(5) para obter mais informações sobre este tópico.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.