systemctl: como iniciar, parar e ver serviços na VPS
Aprenda o systemctl na VPS: ver o status de um serviço, iniciar, parar e reiniciar, a diferença entre enable e start, listar os que falharam e usar o daemon-reload.
Por Redação Eleven Host · @robson.direitodigital · 30 de outubro de 2026 · 8 min de leitura

Capa da Redação Eleven Host para o guia: systemctl: como iniciar, parar e ver serviços na VPS Arte: Eleven Host
O systemctl controla os serviços do systemd: com ele você inicia, para, reinicia, vê o status e liga um serviço no boot. O exemplo mais simples é systemctl status nginx, que mostra como o serviço nginx está agora.
Este guia explica o que é um serviço, como ler o status, qual é a diferença entre start e enable, como listar serviços que falharam e o que fazer depois de mudar um arquivo de serviço. Os fatos vêm da página de manual do systemctl e da documentação do systemd. O nginx aparece como exemplo; troque pelo nome do serviço que você usa.
O que é um serviço e o que é o systemd
Quem administra uma VPS por SSH lida com programas que ficam rodando em segundo plano, como um servidor web ou um banco de dados. No Linux, esses programas podem ser controlados pelo systemd, e o comando que conversa com ele é o systemctl.
O systemctl trabalha com unidades. Um serviço é um tipo de unidade, e a documentação cita outros tipos, como socket. Nos exemplos deste guia, o nome do serviço aparece sem sufixo, como nginx; o nome.service aparece só na seção do mask.
Se você ainda não tem o nginx instalado e quer um serviço real para acompanhar os exemplos, o guia Instalar Nginx no Ubuntu: passo a passo na VPS mostra a instalação.
Ver o status de um serviço
O comando para olhar um serviço é o status. Ele mostra o estado atual do serviço e, logo abaixo, as mensagens recentes do journal, o registro de logs do systemd:
systemctl status nginx
Por padrão, o status mostra 10 linhas de log. Dá para mudar isso com a opção --lines. Para evitar que a saída abra num paginador, acrescente --no-pager:
systemctl status nginx --no-pager
Como ler Loaded e Active
A página de manual traz um exemplo de saída para o serviço bluetooth. As duas linhas que importam têm este formato (os valores são ilustrativos, copiados do exemplo do manual, e na sua VPS serão outros):
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: enabled)
Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago
- Loaded: diz se a unidade foi carregada na memória. O valor é
loadedquando foi. Os outros valores possíveis sãoerror,not-found,bad-settingemasked. A linha também informa se o serviço está habilitado, oenableddo exemplo. - Active: é normalmente
activeouinactive, segundo a página de manual. Durante a troca de um estado para outro aparecemactivatingedeactivating. Se o serviço falhou, aparecefailed.
O ponto no começo da linha resume o estado por cor: verde para ativo, círculo branco para inativo ou em manutenção e xis vermelho para falhou. Para ver mensagens mais antigas do que as que o status mostra, a página manda usar o journalctl --unit=NOME, assunto de uma seção mais adiante.
Iniciar, parar, reiniciar e recarregar
Os quatro comandos básicos mudam o estado do serviço. Eles alteram o sistema, então são rodados com sudo:
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
start: ativa o serviço, isto é, liga agora.stop: desativa o serviço, isto é, para agora.restart: para e inicia de novo. Se o serviço não estava rodando, ele é iniciado.reload: pede ao serviço que recarregue a própria configuração.
Dois comandos parecidos merecem atenção. O try-restart só reinicia se o serviço estiver rodando e não faz nada se ele estiver parado. O reload-or-restart recarrega a configuração se o serviço suportar isso e, se não suportar, reinicia:
sudo systemctl reload-or-restart nginx
Se o serviço suporta o reload depende do programa; a documentação do systemctl não promete que funcione para todo serviço.
Ligar no boot: enable e start são coisas diferentes
Aqui está o centro do guia. O start liga o serviço agora, mas não decide o que acontece quando a VPS reinicia. Quem decide isso é o enable, que faz o serviço subir no boot. Ele cria os links simbólicos da seção [Install] do arquivo do serviço e recarrega a configuração do systemd.
O enable não inicia o serviço. A documentação diz que ele não tem o efeito de também iniciar as unidades habilitadas. Para ligar agora e também no boot, use enable --now.
Resumindo as três formas:
start: liga agora, e só agora.enable: liga a partir do próximo boot.enable --now: faz as duas coisas.
sudo systemctl enable nginx
sudo systemctl enable --now nginx
O caminho inverso segue a mesma lógica. O disable remove os links e não para o serviço, a não ser que você use --now:
sudo systemctl disable --now nginx
Para conferir o resultado sem abrir o status inteiro, existem dois comandos curtos. O is-active informa se o serviço está ativo. O is-enabled escreve o estado de habilitação, que pode ser enabled, disabled, masked, static ou outro valor da lista da documentação:
systemctl is-active nginx
systemctl is-enabled nginx
Precisa de um servidor para os seus serviços? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS
Listar serviços e achar os que falharam
Para ver o que está rodando, use o list-units com o filtro de tipo. Por padrão ele mostra as unidades ativas, as que têm tarefa pendente e as que falharam. Com --all, entram também as inativas:
systemctl list-units --type=service
systemctl list-units --type=service --all
Para ver só os que falharam, use --failed, que equivale a --state=failed:
systemctl --failed
Há ainda o list-unit-files, que lista os arquivos de unidade instalados e informa se estão habilitados. Ele responde à pergunta "o que está configurado para subir no boot", e não "o que está rodando agora":
systemctl list-unit-files --type=service
Usar o resultado em scripts
O is-active sai com código 0 se a unidade está ativa e com código diferente de zero se não está. Com a opção --quiet ele não escreve nada, e o shell usa só o código:
systemctl is-active --quiet nginx && echo "rodando"
O && roda o segundo comando só se o primeiro terminar com sucesso. A página de manual avisa que os códigos de saída seguem uma convenção cujo mapeamento não é perfeito e recomenda olhar o estado da unidade.
Depois de mudar o arquivo do serviço: daemon-reload
Depois de mudar o arquivo de unidade de um serviço, a documentação indica o daemon-reload, que roda os geradores de novo, recarrega todos os arquivos de unidade e refaz a árvore de dependências:
sudo systemctl daemon-reload
Não confunda com o reload de um serviço. O reload nginx faz o nginx reler a configuração dele. O arquivo de unidade, o .service, é lido pelo daemon-reload. O guia Python na VPS: como rodar seu script com venv e systemd traz um serviço para um script, caso você queira ver um caso concreto.
mask e unmask: impedir que um serviço inicie
O mask liga a unidade a /dev/null. Segundo a documentação, isso torna impossível iniciá-la, nem manualmente. O unmask desfaz:
sudo systemctl mask nome.service
sudo systemctl unmask nome.service
Um serviço mascarado aparece com o valor masked na linha Loaded do status e no resultado do is-enabled. Se você tentar iniciar um serviço e ele se recusar, confira se ele não está nesse estado.
Ver os logs de um serviço com journalctl -u
Quando o status mostra failed, o log do serviço é o lugar para procurar a causa. O journalctl lê o journal do systemd, e a opção -u (ou --unit=) mostra as mensagens de uma unidade:
journalctl -u nginx -n 50 --no-pager
journalctl -u nginx -f
journalctl -u nginx -b -p err
-n 50: limita às 50 mensagens mais recentes.-f: mostra as mais recentes e continua mostrando as novas, até você interromper.-b: mostra as mensagens do boot atual.-p err: filtra por prioridade. Com um nível, mostra esse nível e os mais importantes.
O guia journalctl: como ver os logs do sistema na VPS trata do journalctl com mais calma. A página de manual também lista --since e --until, para filtrar por data.
Comandos para guardar
systemctl status nginx: estado atual e mensagens recentes.sudo systemctl start nginx: liga agora.sudo systemctl stop nginx: para agora.sudo systemctl restart nginx: para e inicia de novo.sudo systemctl reload nginx: o serviço recarrega a própria configuração.sudo systemctl enable nginx: sobe no boot, sem iniciar agora.sudo systemctl enable --now nginx: liga agora e no boot.systemctl is-active nginxesystemctl is-enabled nginx: conferem o estado.systemctl list-units --type=service: lista os serviços.systemctl --failed: lista os que falharam.sudo systemctl daemon-reload: depois de editar um arquivo de unidade.journalctl -u nginx -n 50 --no-pager: logs do serviço.
Quer ter um servidor para administrar os seus próprios serviços? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
Para que serve o systemctl?
Para controlar as unidades do systemd, como os serviços: iniciar, parar, reiniciar, ver o status e ligar no boot.
Qual a diferença entre start e enable?
O start liga o serviço agora. O enable faz o serviço subir no boot, mas não o inicia. Para as duas coisas de uma vez, use enable --now.
Qual a diferença entre reload e daemon-reload?
O reload pede ao serviço que recarregue a própria configuração. O daemon-reload faz o systemd recarregar os arquivos de unidade, e é o comando para depois de editar um arquivo .service.
Como ver os serviços que falharam?
Use systemctl --failed, que equivale a --state=failed. Depois veja o log do serviço com journalctl -u NOME.
O que faz o systemctl mask?
Liga a unidade a /dev/null e torna impossível iniciá-la, nem manualmente. O unmask desfaz.