isto é baseado em respostas para O systemd pode executar um comando *antes* de uma reinicialização?
a maneira atual de "iniciar ou reiniciar" um serviço é:
systemctl is-active nginx && systemctl reload nginx || systemctl start nginx
Estou pensando se há uma maneira melhor de usar alvos e coisas assim. Estou com a sensação de que ainda estou tentando usar ferramentas systemd como outras ferramentas init.
O caso em que eu usaria isso é após ajustes manuais na conf, que podem funcionar, mas travar durante o teste de estresse, e então eu preciso iniciar ou reiniciar após novos ajustes no arquivo de configuração. Obviamente, a "solução" aqui pode ser algo que não é aceitável em produção, pois isso é feito em uma caixa vm/dev.
systemctl restart nginx
irá parar e então iniciar a unidade. Em todas as situações: se ela foi iniciada ou não, se ela foi encerrada inesperadamente, se a unidade tem um comando de recarregamento ou não. Não há necessidade de um verbo alternativo para limpar após as execuções de teste.
ExecStartPre=/usr/sbin/nginx -t
Note que algumas unidades systemd para nginx, incluindo distros como Fedora, têm uma verificação de sintaxe antes do início. Também é fácil fazer essa verificação em um editor ou como automação, instalando arquivos de configuração. Definitivamente não vai pegar tudo, mas encontrar os erros de digitação óbvios antes reduz o tempo de inatividade para corrigi-los.
systemctl reload nginx
pode ser suficiente em situações onde a única mudança é um arquivo de configuração. Sua automação sabe que o pacote contendo o executável não foi atualizado, mas algo em /etc/nginx/conf.d/ foi. Você o considera operacional e como a unidade foi habilitada na instalação pode ser assumida como em execução, então recarregue graciosamente.
Independente do gerenciador de serviços, se isso for importante, considere monitorá-lo. Solicitações regulares de um host diferente, como com uma verificação de integridade do balanceador de carga. Colete logs de erros centralmente.