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:
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
:
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:
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.
11.4.1. Gerenciando a configuração específica do sistema
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.
|