Como gerir serviços com systemctl num VPS Linux

systemctl é a principal ferramenta para gerir serviços na maioria das distribuições modernas de VPS Linux. Controla serviços geridos por systemd, incluindo servidores web, bases de dados, bots, daemons de servidores de jogos, ferramentas de monitorização e serviços personalizados que você mesmo cria.

Nos exemplos abaixo, substitua nginx pelo serviço que está a gerir. Nomes comuns de serviços incluem nginx, apache2, mariadb, mysql, docker, sshd, e nomes personalizados como arkserver ou discordbot.

 

Verificar um serviço

Use status antes de reiniciar um serviço. Mostra se o serviço está em execução, se está ativado na inicialização e a saída de erros recentes.

sudo systemctl status nginx

A captura de ecrã abaixo usa o serviço SSH como exemplo; o mesmo layout de saída aplica-se a outros serviços systemd.

Terminal Ubuntu VPS mostrando a saída do status do systemctl para o serviço SSH

Se a saída disser failed, leia as linhas de erro antes de reiniciá-lo repetidamente.

Também pode ver logs com journalctl:

sudo journalctl -u nginx --since "30 minutes ago"

Siga logs ao vivo enquanto reinicia ou testa o serviço:

sudo journalctl -u nginx -f

 

Iniciar, parar, reiniciar e recarregar

ComandoO que faz
sudo systemctl start nginxInicia um serviço parado.
sudo systemctl stop nginxPara um serviço em execução.
sudo systemctl restart nginxPara e inicia o serviço novamente.
sudo systemctl reload nginxRecarrega a configuração sem uma reinicialização completa, se o serviço suportar recargas.
sudo systemctl reload-or-restart nginxRecarrega se possível, caso contrário reinicia.

Use reload quando apenas alterou um ficheiro de configuração e o serviço o suporta. Use restart quando a aplicação precisa de uma paragem/início completa para aplicar alterações.

 

Ativar ou desativar a inicialização automática

Iniciar um serviço agora e ativá-lo na inicialização são ações diferentes. Se quiser que um serviço volte após uma reinicialização do VPS, ative-o.

sudo systemctl enable nginx
sudo systemctl start nginx

Para ativar e iniciar num único comando:

sudo systemctl enable --now nginx

Para impedir que inicie automaticamente na inicialização:

sudo systemctl disable nginx

 

Reiniciar múltiplos serviços

Pode passar mais de um nome de serviço para muitos comandos systemctl:

sudo systemctl restart nginx php8.2-fpm mariadb

Isto é útil após alterar uma stack onde múltiplos serviços dependem uns dos outros, como um servidor web, PHP-FPM e base de dados.

 

Usar wildcards

systemctl pode corresponder nomes de serviços com wildcards. Isto é útil, mas use com cuidado porque pode afetar mais serviços do que pretendia.

Por exemplo, isto mostra todos os serviços PHP-FPM correspondentes:

systemctl list-units 'php*-fpm.service'

Após verificar as correspondências, pode reiniciar os serviços correspondentes:

sudo systemctl restart 'php*-fpm.service'

Sempre liste as correspondências primeiro antes de usar um wildcard com restart, stop ou disable.

 

Criar um serviço personalizado

Pode criar um serviço systemd personalizado para um servidor de jogos, bot ou script para que inicie na inicialização e possa ser gerido com systemctl.

Crie um ficheiro de unidade em /etc/systemd/system/:

sudo nano /etc/systemd/system/myserver.service

Um ficheiro de serviço simples parece-se com isto:

[Unit]
Description=My custom server
After=network.target

[Service]
Type=simple
User=myuser
WorkingDirectory=/home/myuser/myserver
ExecStart=/home/myuser/myserver/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Após criar ou alterar um ficheiro de serviço, recarregue o systemd para que veja a nova unidade:

sudo systemctl daemon-reload

Depois ative e inicie-o:

sudo systemctl enable --now myserver

Verifique com:

sudo systemctl status myserver
sudo journalctl -u myserver -f

Se o serviço falhar, verifique o caminho em ExecStart, o User, permissões de ficheiros, e se o script de inicialização é executado manualmente antes de tentar executá-lo através do systemd.

  • 0 Utilizadores acharam útil
Esta resposta foi útil?

Artigos Relacionados

Como conectar-se a um VPS Linux com SSH

SSH é a forma normal de gerir um VPS Linux. Ele fornece um terminal no servidor para que possa...

Como atualizar pacotes em um VPS Linux

Manter os pacotes atualizados ajuda a corrigir problemas de segurança e mantém as ferramentas do...

Como criar um utilizador sudo num VPS Linux

Um utilizador sudo permite-lhe gerir um VPS Linux sem ter de iniciar sessão como root para cada...

Como proteger o SSH num VPS Linux

O SSH é a principal forma de gerir um VPS Linux, por isso deve ser protegido antes de o servidor...

Como verificar o uso de disco em um VPS Linux

Problemas de uso de disco podem impedir que atualizações, backups, logs, bases de dados e...