Skip to main content

SystemD | Linux

  • SystemD | Linux

O que é a pasta systemd?

systemd é o sistema de inicialização padrão em muitas distribuições modernas do Linux (como Ubuntu, Fedora, Debian, etc.). Ele é responsável por gerenciar o ciclo de vida de serviços, inicializar o sistema, configurar recursos e monitorar processos.

A pasta do systemd geralmente está localizada em /etc/systemd/system e contém os arquivos de configuração de serviços no formato unit files. Esses arquivos controlam como os serviços (daemons) são configurados, iniciados e gerenciados.


Estrutura Comum do systemd

  • /etc/systemd/system/:

    • Contém arquivos de unidades (unit files) configurados pelo administrador.
    • Qualquer configuração personalizada de serviços é salva aqui.
  • /usr/lib/systemd/system/ ou /lib/systemd/system/:

    • Contém arquivos de unidades padrão instalados por pacotes do sistema.
    • Não é recomendado editar diretamente esses arquivos; use os arquivos em /etc/systemd/system para substituir ou personalizar.
  • ~/.config/systemd/user/:

    • Contém arquivos de unidades para serviços de usuário.

Como Criar um Serviço no Linux

Criar um serviço com systemd envolve criar um arquivo de unidade e configurá-lo para gerenciar seu processo ou aplicativo.

Passo 1: Criar o Arquivo de Unidade (Unit File)

Crie um novo arquivo na pasta /etc/systemd/system/. O nome do arquivo deve ter a extensão .service.

sudo nano /etc/systemd/system/meu-servico.service

Exemplo de Arquivo de Serviço:

[Unit]
Description=Meu Serviço Personalizado
After=network.target

[Service]
ExecStart=/usr/bin/python3 /path/to/script.py
Restart=always
User=meu_usuario
WorkingDirectory=/path/to/

[Install]
WantedBy=multi-user.target

Explicação das Seções:

  1. [Unit]:

    • Description: Descrição do serviço.
    • After: Define dependências; neste caso, o serviço será iniciado após o sistema de rede estar ativo.
  2. [Service]:

    • ExecStart: Comando para iniciar o serviço.
    • Restart: Configura como o serviço deve ser reiniciado (always, on-failure, etc.).
    • User: O usuário sob o qual o serviço será executado.
    • WorkingDirectory: O diretório onde o serviço será executado.
  3. [Install]:

    • WantedBy: Define em qual alvo (target) o serviço deve ser habilitado; geralmente é multi-user.target para serviços de sistema.

Passo 2: Ativar e Iniciar o Serviço

  1. Recarregar o systemd para detectar o novo serviço:

    sudo systemctl daemon-reload
  2. Habilitar o serviço para iniciar automaticamente na inicialização:

    sudo systemctl enable meu-servico.service
  3. Iniciar o serviço:

    sudo systemctl start meu-servico.service

Passo 3: Verificar o Status do Serviço

  • Para verificar o status do serviço:

    sudo systemctl status meu-servico.service
  • Para verificar logs relacionados ao serviço:

    sudo journalctl -u meu-servico.service

Passo 4: Testar o Serviço

  • Parar o serviço:

    sudo systemctl stop meu-servico.service
  • Reiniciar o serviço:

    sudo systemctl restart meu-servico.service
  • Desabilitar o serviço:

    sudo systemctl disable meu-servico.service

Exemplo Prático: Criar um Serviço para um Script Python

Se você tem um script Python em /home/user/meu-script.py e quer que ele rode como um serviço:

  1. Crie o arquivo de unidade:

    sudo nano /etc/systemd/system/meu-script.service
  2. Conteúdo do arquivo:

    [Unit]
    Description=Script Python Exemplo
    After=network.target

    [Service]
    ExecStart=/usr/bin/python3 /home/user/meu-script.py
    Restart=on-failure
    User=user
    WorkingDirectory=/home/user/

    [Install]
    WantedBy=multi-user.target
  3. Ative e inicie:

    sudo systemctl daemon-reload
    sudo systemctl enable meu-script.service
    sudo systemctl start meu-script.service
  4. Verifique o status:

    sudo systemctl status meu-script.service