sudo systemctl restart nginx && systemctl is-active nginx reinicia o serviço e imprime uma palavra dizendo se ele está mesmo rodando. O restart fica calado quando dá certo e igualmente calado quando o processo morre um segundo depois, então a verificação precisa ser um comando próprio — e o is-active responde inactive também quando você errou o nome do unit, que é onde quase todo mundo se engana.
1. Reinicie e confira na mesma linha
$ clai reinicie o docker e diga se ele voltou→ sudo systemctl restart docker && systemctl is-active dockeractive
O restart não imprime nada quando dá certo, e silêncio não prova coisa alguma. O is-active devolve uma única palavra com código de saída 0 — exatamente o que se quer depois de &&.
2. A armadilha: erro no nome do unit
$ clai verifique se o serviço nosuch está rodando→ systemctl is-active nosuch.serviceinactive
Um unit que não existe responde inactive com código 4, e não "unit not found". Num script isso se lê como "o serviço está parado", quando na verdade você digitou errado. O status é honesto: Unit nosuch.service could not be found.
3. O que o status está realmente dizendo
$ clai mostre o estado do serviço docker→ systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled) Active: active (running) since Mon 2026-08-24 14:15:54 +07; 3 days ago Invocation: ca41df104d0f46f5a69c964621baf011TriggeredBy: ● docker.socket Docs: https://docs.docker.com
Duas linhas carregam o sentido. Loaded diz que o arquivo do unit foi encontrado, e enabled que ele sobe no boot. Active traz o tempo de execução: se aparecem segundos e você reiniciou há um minuto, o serviço caiu e voltou sozinho.
4. Uma verificação para scripts, não para os olhos
$ clai mostre o estado do docker em formato legível por máquina→ systemctl show -p ActiveState,SubState,MainPID,NRestarts dockerActiveState=activeSubState=runningMainPID=5425NRestarts=0
O show não formata nada para humanos, então sobrevive a atualizações do systemd que remexem a saída bonita. Um NRestarts subindo é o sinal mais rápido de que uma política Restart= está encobrindo um ciclo de quedas.
5. Encontre tudo que falhou
$ clai mostre os serviços que falharam→ systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION● logrotate.service loaded failed failed Rotate log files
Curto e direto. Para um unit específico, systemctl is-failed <nome> imprime failed e sai com código 0 quando ele está mesmo nesse estado.
6. Limpe o estado failed
$ clai limpe o estado de falha do serviço logrotate→ sudo systemctl reset-failed logrotate.service
Enquanto o estado não for limpo, o unit continua na lista --failed e o contador StartLimitBurst pode recusar novas tentativas com "start request repeated too quickly". O reset-failed zera o contador e tira o unit da lista.
Gotchas
- Silêncio depois do restart não prova nada. O
systemctl restartimprime vazio tanto com o serviço saudável quanto com ele morto no primeiro segundo. A verificação é sempre outro comando. is-activenão distingue erro de digitação de serviço parado. Os dois respondeminactive. Os códigos de saída diferem — 4 para um unit inexistente — mas isso não se vê a olho nu, então recorra aostatusquando a resposta surpreender.restartnão relê um arquivo de unit alterado. Depois de editar um.serviceé precisosudo systemctl daemon-reload, senão o systemd sobe a versão antiga e você caça um bug numa configuração já corrigida.
Related questions
Qual a diferença entre restart e reload? O reload pede ao próprio serviço que releia a configuração sem derrubar conexões; o restart mata o processo e sobe de novo. Se o unit não suporta reload, reload-or-restart escolhe o que existir.
Como vejo por que o serviço não subiu? journalctl -u <nome> -n 50 -o cat mostra as últimas linhas do log sem os prefixos de data — o motivo costuma estar ali.
Como sei que ele sobrevive a um reboot? systemctl is-enabled <nome> responde enabled ou disabled. Um serviço rodando agora pode muito bem estar disabled e nunca voltar depois que a máquina reinicia.
See also
O CliAI transforma "reinicia e me diz se voltou" nos dois comandos, e mostra ambos antes de rodar qualquer um. Instale em uma linha.