Eu criei um script de inicialização do systemd que simplesmente chama um script python com argumentos start ou stop. O script funciona se for executado manualmente a partir do shell, mas quando executo systemctl start foo ou systemctl stop foo ele não funciona
[Unit]
Description=foo Backends
After=network.target remote-fs.target nss-lookup.target
[Service]
ExecStart=/opt/foo/scripts/init_backends.py start
ExecStop=/opt/foo/scripts/init_backends.py stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Observe que chamar /opt/foo/scripts/init_backends.py start do shell funciona perfeitamente
Responder1
Começou a funcionar ao usar a seguinte configuração. Acho que StandardOutput=tty foi a chave
[Unit]
Description=foo Backends
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/opt/foo/scripts/init_backends.py start
ExecStop=/opt/foo/scripts/init_backends.py stop
User=root
Group=root
TimeoutSec=300
StandardOutput=tty
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target