Como Corrigir Erro de Serviço systemd no Ubuntu com Python
![]() |
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 comandoExecStart
, 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
- Verifique se o script
knolix.py
está no diretório correto especificado emWorkingDirectory
. - Confirme se os parâmetros passados ao script estão corretos e com a formatação adequada.
- Confira o caminho do ambiente virtual configurado na variável
VIRTUAL_ENV
. - Após modificar o arquivo do serviço, sempre execute o comando abaixo para recarregar as configurações do systemd:
sudo systemctl daemon-reload
- Use o comando abaixo para reiniciar o serviço e verificar se o problema foi solucionado:
sudo systemctl restart arquivo.service
- 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.