11.4. Gerenciando Serviços no FreeBSD
Anterior | Capítulo 11. Configuração e Ajuste | Próxima

## 11.4. Gerenciando Serviços no FreeBSD

Contribuído por Tom Rhodes.

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: "")

### Nota:

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.

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

### Dica:

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.

Anterior | Acima | Próxima
11.3. Configurando o cron(8) | Principal | 11.5. Configurando Placas de Interface de Rede

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