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/systempara 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:
-
[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.
-
[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.
-
[Install]:
WantedBy: Define em qual alvo (target) o serviço deve ser habilitado; geralmente émulti-user.targetpara serviços de sistema.
Passo 2: Ativar e Iniciar o Serviço
-
Recarregar o
systemdpara detectar o novo serviço:sudo systemctl daemon-reload -
Habilitar o serviço para iniciar automaticamente na inicialização:
sudo systemctl enable meu-servico.service -
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:
-
Crie o arquivo de unidade:
sudo nano /etc/systemd/system/meu-script.service -
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 -
Ative e inicie:
sudo systemctl daemon-reload
sudo systemctl enable meu-script.service
sudo systemctl start meu-script.service -
Verifique o status:
sudo systemctl status meu-script.service