He agregado mi servicio asistemad(Lo estoy ejecutando en unpi3), se parece a esto:
[Unit]
Description=Oral-B BLE scanner service
Wants=network-online.target
After=network-online.target
StartLimitBurst=10
StartLimitIntervalSec=10
Requires=bluetooth.target
[Service]
Type=simple
WorkingDirectory=/home/pi/scripts
ExecStart=/home/pi/scripts/scanOralB.py
Restart=always
RestartSec=10
[Install]
WantedBy=network-online.target
He agregado un enlace simbólico al archivo anterior en/lib/systemd/sistema. También he habilitado el servicio. Sólo para estar seguro lo comprobé.
pi@raspberrypi:~ $ systemctl is-enabled scanOralB.service
enabled
Si reinicio y verifico el estado, se ve así:
pi@raspberrypi:~ $ sudo systemctl status scanOralB.service
* scanOralB.service - Oral-B BLE scanner service
Loaded: loaded (/home/pi/scripts/scanOralB.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Si inicio el servicio manualmente, funciona bien. ¿Alguien puede explicar por qué el servicio no se inicia después del arranque? No obtengo ningún resultado extra dediarioctlcualquiera.
Respuesta1
No se está iniciando porque nada de lo que se inicia lo quiere.
[Instalar] WantedBy=red-en línea.objetivoHe agregado un enlace simbólico al archivo anterior en/lib/systemd/sistema.
Casi todo eso está mal.
- El archivo unitario debe sermetidoen
/etc/systemd/system
. Los enlaces simbólicos son interpretados de manera idiosincrásica por systemd y no tienen la semántica del sistema de archivos convencional. Y/lib/systemd/system
no es el lugar para archivos unitarios escritos a mano que no provienen de paquetes. - El archivo de la unidad debería ser buscado por algo que realmente se inicie en el arranque.
network-online.target
normalmente no lo hace.multi-user.target
es la elección habitual.graphical.target
es otro.