Execute qualquer Executável como um Serviço no Linux

Executar qualquer executável como um serviço do Linux

Conteúdo da página

Aqui está um conjunto de instruções sobre Como Configurar para Executar qualquer Executável como um Serviço no Linux com Systemd.

linux cogs Acima está uma imagem gerada por IA (pelo modelo Flux 1 dev) dos engrenagens que representam a abordagem DIY do Linux.

Systemd

Systemd é um gerenciador de sistema e serviços e uma ferramenta de inicialização em algumas distribuições Linux.

Algumas das distribuições populares com systemd:

  • Ubuntu 16.04 ou mais recente
  • Debian Jessie ou mais recente
  • Arch Linux
  • CentOS 7 / RHEL 7 ou mais recente
  • Fedora 15 ou mais recente

systemctl

systemctl é uma ferramenta de linha de comando para controlar o systemd.

listar todos os serviços

Para listar todos os serviços, execute

systemctl list-units --type=service

Criar um arquivo de serviço

Navegue até o diretório de serviço do systemd e crie um novo arquivo com a extensão .service:

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

Configure o arquivo de serviço:

Adicione o seguinte conteúdo ao arquivo, ajustando os valores conforme necessário:

[Unit]
Description=Descrição do Seu Serviço
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/caminho/para/seu/diretório/executável
ExecStart=/caminho/para/seu/executável
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Salve e feche o arquivo.

Início atrasado do serviço

Se você suspeitar de um problema de timing durante o início do serviço, considere adicionar um atraso à sua configuração de serviço:

[Service]
ExecStartPre=/bin/sleep 10

Dependências do serviço

Para configurar dependências do seu serviço: na seção [Unit] do arquivo de configuração do serviço,

adicione as seguintes diretivas:

Use After= para especificar serviços que devem iniciar antes do seu serviço:

After=network.target outro_serviço.service

Use Requires= para definir dependências duras:

Requires=serviço_necessário.service

Use Wants= para dependências suaves:

Wants=serviço_opcional.service

Recarregar o systemd para reconhecer o novo serviço

sudo systemctl daemon-reload

Verificar dependências do serviço

sudo systemctl list-dependencies your_service_name.service

Habilitar o serviço para iniciar no boot

sudo systemctl enable your_service_name.service

Para verificar se seu serviço está configurado para iniciar no boot:

sudo systemctl is-enabled your_service_name.service

Iniciar o serviço

sudo systemctl start your_service_name.service
# ou
sudo systemctl restart your_service_name.service

Verificar o status do serviço

Se algo deu errado – verifique os logs e o status do serviço do Linux:

sudo systemctl status your_service_name.service

ou

sudo journalctl -u your_service_name.service

Para scripts Python

ExecStart=/caminho/para/conda/envs/my_env_name/bin/python /caminho/para/executável.py

Comentários

Agora você pode gerenciar seu serviço usando comandos do systemctl, como start, stop, restart e status.

Para executáveis que requerem parâmetros, modifique a linha ExecStart no arquivo de serviço conforme necessário.

Por exemplo, se você precisar executar uma aplicação Java, use o comando completo de Java na linha ExecStart.

Lembre-se de ajustar permissões de arquivo e propriedades conforme necessário, e certifique-se de que o executável tenha as permissões corretas para execução.

Controle de serviços systemd com chkservice

Em vez de executar

sudo systemctl start some-serviceservice
# ou
sudo systemctl restart some-serviceservice

Você pode usar uma ferramenta de interface de console. Fácil e leve

sudo apt-get install chkservice

sudo chkservice