%3F.png)
Embora o problemaexposto aquiparece muito semelhante, nenhuma das soluções fornecidas funciona. Contexto:
- Raspberry Pi Zero W, Raspbian Lite (20/08/2020)
- Quero registrar um script python3 como serviço, para rodar em segundo plano
Eu queria fazer isso funcionar com o systemd, que funcionava com a seguinte configuração:
application.service
reside em/etc/systemd/system/application.service
[Unit]
Description=application
After=multi-user.target
[Service]
User=custom_user
Type=idle
TimeoutSec=0
PIDFile=/run/application.pid
ExecStart=/usr/bin/python3 -u /path/to/application.py >> /path/to/log.log 2>&1
KillMode=control-group
Environment="PYTHONUNBUFFERED=1"
Restart=always
RestartSec=3s
[Install]
WantedBy=multi-user.target
Este serviço é carregado corretamente na inicialização, nos segmentos esperados (relacionados a Wants
seções WantedBy
).Mas não registrará nada no arquivo de log que forneci. Você percebe Environment
a entrada para forçar PYTHONUNBUFFERED
e a mesma coisa com o -u
argumento passado na chamada executável do Python. Isto não tem efeito algum.
Se eu iniciar exatamente a mesma linha exec em uma CLI, o script será executado E registrará. Através da definição de serviço, nenhum log.
Notas laterais:
- Se eu verificar
journalctl
a saída, encontro minhas linhas de log logrotate
elog2ram
são configurados no arquivo/diretório de log
Acabei adicionando minha linha de comando /etc/rc.local
seguida por um e comercial. Na minha opinião, isso não é uma boa ideia, pois gostaria de registrar este serviço da melhor maneira possível em relação ao sistema em que está sendo executado.
Obrigado por suas respostas e esclarecimentos.
Responder1
Você não deve tentar usar redirecionamentos de shell dessa maneira. Não funciona porque o systemd não é um shell. Em vez disso, especifiqueStandardOutput=
eStandardError=
explicitamente se você quiser que eles sejam direcionados para algum lugar diferente do diário.