Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Como Corrigir Erro de Serviço systemd no Ubuntu com Python

#Ubuntu; #systemd; #PythonService

Como Corrigir Erro de Serviço systemd no Ubuntu com Python

@CanalQb Python - Ubuntu - Erro (code=exited, status=1/FAILURE) Main PID: 1692 (code=exited, status=1/FAILURE)
@CanalQb

Este erro ocorre ao tentar iniciar um serviço personalizado no Ubuntu, especificamente o serviço "arquivo.service". O systemd, que gerencia os serviços do sistema, tentou iniciar o serviço automaticamente, mas o processo falhou com um código de saída exit-code 1/FAILURE.

O que significa essa mensagem de erro?

A mensagem “activating (auto-restart)” indica que o systemd está tentando reiniciar o serviço automaticamente após a falha. Contudo, como o resultado final é um código de saída 1 (falha), o comando definido em ExecStart não conseguiu ser executado com sucesso.

Análise do problema

O comando ExecStart geralmente especifica o script ou programa que deve ser executado para iniciar o serviço. No seu caso, ele tenta executar o script Python knolix.py passando dois parâmetros: login e senha$. Possíveis causas para o erro incluem:

  • O script knolix.py não estar no caminho correto.
  • Os parâmetros passados ao script estão incorretos ou mal formatados.
  • O ambiente virtual Python (virtualenv) não estar ativado corretamente.
  • Problemas na configuração do arquivo do serviço, como erros de sintaxe.

Verificação do ambiente virtual

O comando source $VIRTUAL_ENV/bin/activate ativa o ambiente virtual Python antes de executar o script. Caso o caminho contido na variável VIRTUAL_ENV esteja incorreto, o ambiente não será ativado, causando falha na execução do script.

Exemplo do arquivo de serviço problemático

[Unit]
Description=Knolix qrodrigob.py
After=multi-user.target

[Service]
Type=simple
Restart=always
Environment="VIRTUAL_ENV=/home/ubuntu/knolix/qrodrigob
WorkingDirectory=/home/ubuntu/knolix
User=root
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /home/ubuntu/knolix/knolix.py login senha$"

[Install]
WantedBy=multi-user.target

Arquivo de serviço corrigido e funcionando

[Unit]
Description=Knolix qrodrigob.py
After=multi-user.target

[Service]
Type=simple
Restart=always
Environment="VIRTUAL_ENV=/home/ubuntu/knolix/qrodrigob"
WorkingDirectory=/home/ubuntu/knolix
User=root
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /home/ubuntu/knolix/knolix.py login 'senha'"

[Install]
WantedBy=multi-user.target

Principais correções realizadas

  • Adicionada a aspa de fechamento na linha Environment que estava ausente, corrigindo erro de sintaxe.
  • Incluídas aspas simples em torno do segundo argumento 'senha' no comando ExecStart, garantindo que o parâmetro seja interpretado corretamente como string.
  • Corrigida a aspa de fechamento do comando ExecStart, evitando erros de parsing.

Recomendações para resolver e evitar erros futuros

  1. Verifique se o script knolix.py está no diretório correto especificado em WorkingDirectory.
  2. Confirme se os parâmetros passados ao script estão corretos e com a formatação adequada.
  3. Confira o caminho do ambiente virtual configurado na variável VIRTUAL_ENV.
  4. Após modificar o arquivo do serviço, sempre execute o comando abaixo para recarregar as configurações do systemd:
    sudo systemctl daemon-reload
  5. Use o comando abaixo para reiniciar o serviço e verificar se o problema foi solucionado:
    sudo systemctl restart arquivo.service
  6. Consulte os logs do serviço para detalhes dos erros com:
    journalctl -u arquivo.service -b

Considerações finais

Configurar serviços personalizados no Ubuntu com systemd requer atenção especial à sintaxe e aos caminhos dos arquivos. Erros de aspas, caminhos incorretos e parâmetros mal formatados são causas comuns de falhas.

Seguindo as orientações deste guia, você poderá corrigir problemas relacionados ao erro status=1/FAILURE e garantir que seus scripts Python rodem corretamente como serviços no Ubuntu.

Para aprofundar seus conhecimentos sobre systemd e criação de serviços, consulte a documentação oficial do systemd.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo