3.5.5. Modificação de arquivos de unidades existentes

Os serviços instalados no sistema vêm com arquivos de unidade padrão que são armazenados no diretório /usr/lib/systemd/system/. Os administradores do sistema não devem modificar estes arquivos diretamente, portanto qualquer personalização deve ser confinada aos arquivos de configuração no diretório /etc/systemd/system/.

Procedimento

  1. Dependendo da extensão das mudanças necessárias, escolha uma das seguintes abordagens:

    • Crie um diretório para arquivos de configuração suplementares em /etc/systemd/system/unit.d/. Este método é recomendado para a maioria dos casos de uso. Ele permite estender a configuração padrão com funcionalidade adicional, enquanto ainda se refere ao arquivo original da unidade. As mudanças na unidade padrão introduzidas com uma atualização de pacote são, portanto, aplicadas automaticamente. Veja Estendendo a configuração padrão da unidade para maiores informações.
    • Criar uma cópia do arquivo original da unidade /usr/lib/systemd/system/ em /etc/systemd/system/ e fazer alterações lá. A cópia substitui o arquivo original, portanto as alterações introduzidas com a atualização do pacote não são aplicadas. Este método é útil para fazer mudanças significativas na unidade que devem persistir independentemente das atualizações do pacote. Consulte Substituição da configuração padrão da unidade para obter detalhes.
  2. Para retornar à configuração padrão da unidade, exclua os arquivos de configuração criados sob medida em /etc/systemd/system/.
  3. Para aplicar mudanças nos arquivos da unidade sem reiniciar o sistema, execute:

    systemctl daemon-reload

    A opção daemon-reload recarrega todos os arquivos unitários e recria toda a árvore de dependência, que é necessária para aplicar imediatamente qualquer mudança em um arquivo unitário. Como alternativa, é possível obter o mesmo resultado com o seguinte comando, que deve ser executado sob o usuário root:

    init q
  4. Se o arquivo da unidade modificada pertence a um serviço em execução, este serviço deve ser reiniciado para aceitar novas configurações:

    systemctl restart name.service
Importante

Para modificar propriedades, tais como dependências ou timeouts, de um serviço que é tratado por um initscript SysV, não modifique o initscript em si. Em vez disso, crie um arquivo de configuração drop-in systemd para o serviço, conforme descrito em Estendendo a configuração padrão da unidade e Substituindo a configuração padrão da unidade. Em seguida, gerencie este serviço da mesma forma que um serviço normal systemd.

Por exemplo, para estender a configuração do serviço network, não modifique o arquivo initscript /etc/rc.d/init.d/network. Em vez disso, crie um novo diretório /etc/systemd/system/network.service.d/ e um arquivo drop-in systemd /etc/systemd/system/network.service.d/my_config.conf. Em seguida, coloque os valores modificados no arquivo drop-in. Nota: systemd conhece o serviço network como network.service, e é por isso que o diretório criado deve ser chamado network.service.d

3.5.5.1. Estendendo a configuração padrão da unidade

Esta seção descreve como estender o arquivo de unidade padrão com opções adicionais de configuração.

Procedimento

  1. Para estender o arquivo de unidade padrão com opções adicionais de configuração, primeiro crie um diretório de configuração em /etc/systemd/system/. Se estiver ampliando uma unidade de serviço, execute o seguinte comando como root:

    mkdir /etc/systemd/system/name.service.d/

    Substitua name pelo nome do serviço que você deseja estender. A sintaxe acima se aplica a todos os tipos de unidade.

  2. Criar um arquivo de configuração no diretório feito na etapa anterior. Note que o nome do arquivo deve terminar com o sufixo .conf. Digite:

    touch /etc/systemd/system/nome.serviço.d/config_name.conf

    Substituir config_name pelo nome do arquivo de configuração. Este arquivo adere à estrutura normal do arquivo de unidade, portanto, todas as diretrizes devem ser especificadas nas seções apropriadas, ver Estrutura do arquivo de unidade.

    Por exemplo, para adicionar uma dependência personalizada, crie um arquivo de configuração com o seguinte conteúdo:

    [Unit]
    Requires=new_dependency
    After=new_dependency

    Onde new_dependency significa que a unidade deve ser marcada como uma dependência. Outro exemplo é um arquivo de configuração que reinicia o serviço após a saída de seu processo principal, com um atraso de 30 segundos:

    [Service]
    Restart=always
    RestartSec=30

    É recomendado criar pequenos arquivos de configuração focados apenas em uma tarefa. Tais arquivos podem ser facilmente movidos ou ligados a diretórios de configuração de outros serviços.

  3. Para aplicar as mudanças feitas na unidade, execute como root:

    systemctl daemon-reload
    systemctl restart name.service

Exemplo 3.10. Estendendo a configuração do httpd.service

Para modificar a unidade de serviço httpd.service para que um script de shell personalizado seja executado automaticamente ao iniciar o serviço Apache, execute os seguintes passos.

  1. Criar um diretório e um arquivo de configuração personalizado:

    # mkdir /etc/systemd/systemd/httpd.service.d/
    # touch /etc/systemd/system/httpd.service.d/custom_script.conf
  2. Desde que o script que você queira iniciar automaticamente com o Apache esteja localizado em /usr/local/bin/custom.sh, insira o seguinte texto no arquivo custom_script.conf:

    [Service]
    ExecStartPost=/usr/local/bin/custom.sh
  3. Para aplicar as mudanças de unidade, execute:

    # systemctl daemon-reload
    # systemctl restart httpd.service
Nota

Os arquivos de configuração dos diretórios de configuração em /etc/systemd/system/ têm precedência sobre os arquivos de unidade em /usr/lib/systemd/system/. Portanto, se os arquivos de configuração contêm uma opção que pode ser especificada apenas uma vez, como Description ou ExecStart, o valor padrão desta opção é anulado. Observe que na saída do comando systemd-delta, descrito em Monitoramento de unidades sobrescritas, tais unidades são sempre marcadas como [EXTENDIDAS], mesmo que, em suma, certas opções sejam de fato sobrescritas.