CodeGym /Cursos /Docker SELF /Noções básicas de gerenciamento de serviços: comandos sys...

Noções básicas de gerenciamento de serviços: comandos systemctl (iniciar, parar, reiniciar serviços)

Docker SELF
Nível 3 , Lição 0
Disponível

1. O que são serviços no Linux?

Serviços são a base de qualquer distribuição Linux moderna. Quer rodar seu servidor web no Nginx? Inicie e configure o serviço correspondente. Quer que o banco de dados MySQL funcione? De novo, é um serviço. Até mesmo seu amado cron, que vai rodar aqueles scripts bash incríveis, também é um serviço. Gerenciar serviços é uma habilidade que você com certeza vai usar não só no trabalho, mas também nos projetos pessoais. Aliás, nas entrevistas, a pergunta "E como você para um serviço?" aparece mais vezes do que você poderia imaginar.

Definição e papel

Um serviço no Linux é um programa que roda em segundo plano (ou seja, como daemon, do inglês "daemon"). Esses programas podem ser iniciados automaticamente durante o boot do sistema ou manualmente quando necessário. Eles são responsáveis por realizar tarefas específicas, como:

  • Atender requisições web (por exemplo, nginx/apache).
  • Suporte para acesso remoto (por exemplo, openssh).
  • Rodar tarefas agendadas (por exemplo, cron).

Basicamente, os serviços são os "trabalhadores incansáveis" que realizam tarefas invisíveis ao usuário, mas absolutamente críticas para o funcionamento do sistema.


2. Fundamentos de gerenciamento de serviços com systemctl

O que é systemctl?

Vamos começar pelo básico: systemctl é o comando principal para gerenciar serviços em sistemas que utilizam o systemd. Se a sua máquina roda uma distribuição Linux moderna (como Ubuntu, Fedora ou CentOS), é provável que esteja usando systemd.

Funções principais

  1. Iniciar um serviço: colocar o serviço em funcionamento caso esteja desativado.
  2. Parar um serviço: encerrar a execução do serviço.
  3. Reiniciar um serviço: primeiro parar e depois iniciar o serviço novamente.
  4. Verificar o status: checar o estado atual do serviço.

A estrutura básica do comando é:

sudo systemctl [ação] [nome_do_serviço]

Iniciar e parar um serviço

Iniciar:

Imagina que você instalou o servidor web nginx e quer colocá-lo em funcionamento. Para isso, você usa o comando start:

sudo systemctl start nginx

Parar:

Mas e se você quiser desativar o servidor web temporariamente? O comando stop vai te ajudar:

sudo systemctl stop nginx

Reiniciar um serviço

Reiniciar serve para aplicar mudanças na configuração ou apenas "dar uma refrescada" no serviço (basicamente, é como dar um café pra ele e lembrar que precisa trabalhar). Use o comando restart:

sudo systemctl restart nginx

Verificar o status

Você não tem certeza se o nginx está funcionando? O comando status fornece informações detalhadas:

sudo systemctl status nginx

O resultado exibirá:

  • O identificador único de processo (PID).
  • Tempo de inicialização.
  • Logs de erros, caso algo dê errado.

Exemplo de saída:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. Inicialização Automática de Serviços

Habilitar Inicialização Automática

Para que o serviço seja iniciado automaticamente toda vez que o sistema for iniciado, use:

sudo systemctl enable nginx

Desabilitar Inicialização Automática

E se você quiser que o serviço não seja mais iniciado durante a inicialização:

sudo systemctl disable nginx

Aqui está uma maneira simples de verificar se a inicialização automática está habilitada:

systemctl is-enabled nginx

Prática de Gerenciamento de Serviços

Vamos realizar um exercício completo usando o exemplo do serviço cron.

  1. Inicie o serviço cron:

    sudo systemctl start cron
    
  2. Verifique se está funcionando:

    sudo systemctl status cron
    

    Certifique-se de que o status seja "active (running)".

  3. Pare o serviço cron:

    sudo systemctl stop cron
    

    Verifique se o status mudou para "inactive (dead)".

  4. Reinicie o serviço cron:

    sudo systemctl restart cron
    

4. Diferença entre serviços ativos, desativados e com falha

Os serviços podem ter diferentes estados. Aqui estão os principais tipos:

  1. Active (running) — o serviço está rodando ativamente; tudo certo.
  2. Inactive (dead) — o serviço está parado.
  3. Failed — ocorreu um erro ao iniciar, parar ou executar o serviço.

Para encontrar rapidamente todos os serviços que estão com erro, use:

systemctl --failed

5. Erros típicos e armadilhas

Erro: Unit not found

Se aparecer a mensagem algo como:

Failed to start nginx.service: Unit nginx.service not found.

Isso pode significar que o serviço necessário não está instalado ou o nome dele foi informado de forma errada. Verifique o nome correto:

systemctl list-unit-files | grep nginx

Erro de permissão

Se você esqueceu de executar o comando com permissões sudo, provavelmente receberá uma mensagem de acesso negado:

Permission denied

Não se esqueça de adicionar sudo antes dos comandos systemctl.


6. Aplicação em projetos reais

Gerenciar serviços é algo que você vai usar em qualquer papel relacionado ao Linux:

  • DevOps: automatização e gerenciamento de todos os serviços do sistema.
  • Administração de servidores: monitorar o status de servidores web, bancos de dados e outros serviços.
  • Desenvolvimento no Linux: você precisa entender como gerenciar serviços relacionados ao seu projeto (por exemplo, iniciar servidores de desenvolvimento).

Portanto, conhecer o comando systemctl não é apenas uma habilidade abstrata, mas uma ferramenta real de trabalho. Exemplo: precisa reiniciar um servidor web após atualizar o site? Um comando sudo systemctl restart nginx — e problema resolvido!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION