%3F.png)
Aunque el problemaexpuesto aquíParece muy similar, ninguna de las soluciones proporcionadas funciona. Contexto :
- Raspberry Pi Zero W, Raspbian Lite (20/08/2020)
- Quiero registrar un script de Python3 como servicio para ejecutarlo en segundo plano.
Quería hacerlo funcionar con systemd, que funcionaba con la siguiente configuración:
application.service
se encuentra en/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 servicio se carga correctamente al inicio, en los segmentos esperados (relacionados con Wants
y WantedBy
secciones).Pero no registrará nada en el archivo de registro que proporcioné.. Notará Environment
la entrada a la fuerza PYTHONUNBUFFERED
y lo mismo con el -u
argumento pasado en la llamada ejecutable de Python. Esto no tiene ningún efecto.
Si ejecuto exactamente la misma línea ejecutiva en una CLI, el script se ejecuta Y registra. A través de la definición del servicio, no hay ningún registro.
Notas al margen:
- Si reviso
journalctl
la salida, encuentro mis líneas de registro. logrotate
ylog2ram
están configurados en el archivo/directorio de registro
Terminé agregando mi línea de comando /etc/rc.local
seguida de un signo comercial. En mi opinión, esto no es posible ya que me gustaría registrar este servicio de la mejor manera posible con respecto al sistema en el que se está ejecutando.
Gracias por sus respuestas e iluminaciones.
Respuesta1
No deberías intentar utilizar redirecciones de shell de esta manera. No funciona porque systemd no es un shell. Más bien, especifiqueStandardOutput=
yStandardError=
explícitamente si desea que se dirijan a otro lugar que no sea la revista.