===== Exemplos do comando systemctl =====
==== Nível Básico ====
* **Iniciar um serviço:**
- sudo systemctl start nome_servico
- Inicia o serviço `nome_servico` imediatamente.
* **Parar um serviço:**
- sudo systemctl stop nome_servico
- Para o serviço `nome_servico` imediatamente.
* **Reiniciar um serviço:**
- sudo systemctl restart nome_servico
- Reinicia o serviço `nome_servico`, parando-o e iniciando-o novamente.
* **Verificar o status de um serviço:**
- sudo systemctl status nome_servico
- Exibe o status atual do serviço `nome_servico`, incluindo logs recentes.
* **Habilitar um serviço para iniciar automaticamente no boot:**
- sudo systemctl enable nome_servico
- Configura o serviço `nome_servico` para iniciar automaticamente no boot.
* **Desabilitar um serviço de iniciar no boot:**
- sudo systemctl disable nome_servico
- Impede o serviço `nome_servico` de iniciar automaticamente no boot.
==== Nível Intermediário ====
* **Recarregar a configuração de um serviço sem interromper sua execução:**
- sudo systemctl reload nome_servico
- Recarrega as configurações do serviço `nome_servico` sem reiniciar o serviço.
* **Recarregar a configuração e reiniciar se necessário (`reload-or-restart`):**
- sudo systemctl reload-or-restart nome_servico
- Recarrega a configuração do serviço `nome_servico` e, caso a recarga não seja suportada, reinicia o serviço.
* **Listar todos os serviços ativos:**
- systemctl list-units --type=service --state=active
- Exibe uma lista de todos os serviços ativos atualmente no sistema.
* **Verificar se um serviço está habilitado no boot:**
- systemctl is-enabled nome_servico
- Verifica se o serviço `nome_servico` está configurado para iniciar automaticamente no boot.
* **Verificar o estado de todos os serviços:**
- systemctl list-units --type=service
- Exibe o estado de todos os serviços conhecidos no sistema.
* **Exibir o histórico de falhas de um serviço:**
- sudo systemctl status nome_servico
- Mostra o histórico de erros e falhas de execução recentes do serviço `nome_servico`.
* **Reiniciar todos os serviços que dependem de um serviço específico:**
- sudo systemctl reload nome_servico --all
- Recarrega ou reinicia todos os serviços que dependem do serviço `nome_servico`.
==== Nível Avançado ====
* **Reinicializar o sistema (comando `reboot` via systemctl):**
- sudo systemctl reboot
- Reinicia o sistema de maneira controlada.
* **Desligar o sistema (comando `shutdown` via systemctl):**
- sudo systemctl poweroff
- Desliga o sistema completamente.
* **Verificar a falha mais recente de um serviço:**
- sudo systemctl --failed
- Exibe a lista de serviços que falharam recentemente.
* **Verificar dependências de um serviço:**
- systemctl list-dependencies nome_servico
- Mostra todas as dependências do serviço `nome_servico`.
* **Verificar os logs de um serviço com o `journalctl`:**
- journalctl -u nome_servico
- Exibe os logs gerados pelo serviço `nome_servico`.
* **Habilitar um serviço para rodar somente para o próximo boot:**
- sudo systemctl enable nome_servico --now
- Habilita o serviço para iniciar automaticamente apenas no próximo boot.
* **Desabilitar e parar um serviço simultaneamente:**
- sudo systemctl disable nome_servico --now
- Desabilita o serviço de iniciar no boot e o para imediatamente.
* **Analisar o status completo de um serviço, incluindo dependências:**
- systemctl show nome_servico
- Exibe o status detalhado do serviço `nome_servico`, incluindo todas as suas dependências e configurações.
==== Nível Especializado ====
* **Criar e habilitar um novo serviço personalizado (unit file):**
- **Criar o arquivo de serviço:**
sudo nano /etc/systemd/system/meu_servico.service
- **Adicionar a seguinte configuração:**
```ini
[Unit]
Description=Meu Serviço Personalizado
After=network.target
[Service]
ExecStart=/caminho/para/o/script.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
- **Habilitar e iniciar o serviço:**
sudo systemctl enable meu_servico.service
sudo systemctl start meu_servico.service
- Cria, habilita e inicia um serviço personalizado que executa o script `script.sh`.
* **Recarregar a configuração do `systemd` após alterar um arquivo de serviço:**
- sudo systemctl daemon-reload
- Recarrega as configurações do `systemd` após modificar arquivos de unidades (unit files).
* **Definir o tempo limite (timeout) para a reinicialização de um serviço:**
- sudo systemctl set-property nome_servico RestartSec=10
- Define um tempo de 10 segundos como limite para que o serviço `nome_servico` seja reiniciado após uma falha.
* **Desativar permanentemente um serviço (máscara):**
- sudo systemctl mask nome_servico
- Impede que o serviço `nome_servico` seja iniciado, mesmo que alguém tente iniciar manualmente.
* **Remover uma máscara de um serviço:**
- sudo systemctl unmask nome_servico
- Remove a máscara do serviço `nome_servico`, permitindo que ele seja iniciado novamente.
* **Executar um serviço em um ambiente específico (override environment):**
- sudo systemctl edit nome_servico
- Abre um editor para modificar a configuração do serviço e adicionar variáveis de ambiente personalizadas.
* **Alterar a prioridade de um serviço (nice value):**
- sudo systemctl set-property nome_servico CPUShares=500
- Ajusta a prioridade do serviço `nome_servico`, alterando o valor de compartilhamento de CPU (quanto maior, mais recursos são alocados).
* **Desativar o modo de suspensão do sistema:**
- sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
- Impede que o sistema entre em qualquer modo de suspensão.
* **Habilitar o modo de recuperação do sistema:**
- sudo systemctl isolate rescue.target
- Coloca o sistema no modo de recuperação, onde apenas serviços essenciais são carregados.