systemctl cat/edit

Não faz muito saímos do systemd 208 do CentOS 7.0 e 7.1 para o 219 do 7.2. A nova versão traz dois novos verbos no systemctl: cat (209) e edit (218).

O primeiro, apesar de simples, é muito útil. Serve para mostrar a íntegra do arquivo de unidade em questão e também eventuais drop-ins e overrides.

# systemctl cat bacana.service
# /usr/lib/systemd/system/bacana.service
[Unit]
Description=Serviço bacana

[Service]
ExecStart=/usr/bin/sleep 10000000

[Install]
WantedBy=multi-user.target

Suponhamos que precisemos modificar bacana.service e ordená-lo após, por exemplo, crond.service. Usamos:

# systemctl edit bacana.service

Será aberto num editor um arquivo (drop-in) de nome override.conf dentro do diretório /etc/systemd/system/bacana.service.d (será criado se necessário). Para escolher qual editor usar, as variáveis de ambiente SYSTEMD_EDITOR, EDITOR e VISUAL (nessa ordem) são interpretadas. Se não existir nenhuma delas, são tentados em ordem: nano, vim e vi.

Colocamos então as configurações desejadas, lembrando de especificar a seção ([Unit], [Service], etc) a que pertencem:

[Unit]
After=crond.service
Wants=crond.service

Salvamos o arquivo. Quando o editor finalizar, o systemd automaticamente recarregará sua configuração (equivalente a systemctl daemon-reload). Dependendo de onde você tenha mexido, pode ser necessário reiniciar a unidade para aplicar as mudanças, o que deverá ser feito manualmente. Consultamos se tudo está correto:

# systemctl cat bacana.service
# /usr/lib/systemd/system/bacana.service
[Unit]
Description=Serviço bacana

[Service]
ExecStart=/usr/bin/sleep 10000000

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/bacana.service.d/override.conf
[Unit]
After=crond.service
Wants=crond.service

Caso as alterações sejam grandes demais, podemos adicionar a opção --full, que substituirá o arquivo (override) de /usr/lib/systemd/system criando outro com o mesmo nome em /etc/systemd/system e lhe entregando prontinho para ser modificado dentro do editor (drop-ins criados previamente são mantidos):

# systemctl edit --full bacana.service

Era possível fazer o mesmo manualmente desde a versão 198.

Relacionado:
Modificar parâmetros dos arquivos de unidade do systemd
Básico dos arquivos de unidade do systemd
Olho de Cylon do systemd
Ordenação no systemd
systemctl enable|disable|mask --now
systemctl revert

Comentários