python script als system service met $ARG

Pagina: 1
Acties:

Vraag


  • ppeterr
  • Registratie: Juni 2008
  • Laatst online: 13:42
Mijn vraag

Ik draai een python script deze werkt goed. Ik draai die netjes in een screen maar
dat vind ik niet helemaal de oplossing. Dus ik wil er een service van maken.
Enkel er gaat iets mis met het toevoegen van de argumenten


Relevante software en hardware die ik gebruik

Ubuntu op een rpi

Wat ik al gevonden of geprobeerd heb

ubuntu@ubuntu:/lib/systemd/system$velux.service

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Somfy connect
After=multi-user.target
Conflicts=getty@tty1.service

[Service]
Type=simple
#user=ubuntu
EnvironmentFile=/etc/velux.progconf
ExecStart=/usr/bin/python /home/peter/KLF/vlxcontrol.py $ARG1 $ARG2
StandardInput=tty-force

[Install]
WantedBy=multi-user.target


ubuntu@ubuntu:/etc$ velux.progconf

code:
1
2
ARG1=192.168.1.134
ARG2=8000


#sudo systemctl daemon-reload
#sudo systemctl enable velux.service
#sudo systemctl start velux.service

Dit resulteert dat het start, maar eigenlijk direct erna stopt

Start

code:
1
2
3
4
5
6
7
● velux.service - Velux Somfy Control
     Loaded: loaded (/etc/systemd/system/velux.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-09-29 12:43:41 CEST; 147ms ago
   Main PID: 9062 (python3)
      Tasks: 1 (limit: 9257)
     CGroup: /system.slice/velux.service
             └─9062 /usr/bin/python3 /home/peter/KLF/vlxcontrol.py


Direct er achteraan

code:
1
2
3
4
5
6
7
8
9
10
11
● velux.service - Velux Somfy Control
     Loaded: loaded (/etc/systemd/system/velux.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-09-29 12:43:45 CEST; 5s ago
    Process: 9072 ExecStart=/usr/bin/python3 /home/peter/KLF/vlxcontrol.py (code=exited, status=2)
   Main PID: 9072 (code=exited, status=2)

Sep 29 12:43:45 ubuntu systemd[1]: velux.service: Scheduled restart job, restart counter is at 5.
Sep 29 12:43:45 ubuntu systemd[1]: Stopped Velux Somfy Control.
Sep 29 12:43:45 ubuntu systemd[1]: velux.service: Start request repeated too quickly.
Sep 29 12:43:45 ubuntu systemd[1]: velux.service: Failed with result 'exit-code'.
Sep 29 12:43:45 ubuntu systemd[1]: Failed to start Velux Somfy Control.

Alle reacties


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 03-06 22:31

Hero of Time

Moderator LNX

There is only one Legend

Hoe start je 'm normaal gesproken? Lijkt erop dat je met mogelijk een Python venv werkt. Bovendien staat je zut in je eigen home map. Units draaien tenzij anders aangegeven als root. En dat wil je echt absoluut niet. Zeker voor iets wat je als non-privileged gebruiker prima kan draaien.

Zorg dat je 'programma' fatsoenlijk dingen logt als het wordt gestart en werkt, want nu weten we alleen maar dat het start en stop, maar waarom is totaal onduidelijk.

Commandline FTW | Tweakt met mate


  • ppeterr
  • Registratie: Juni 2008
  • Laatst online: 13:42
Hero of Time schreef op woensdag 29 september 2021 @ 17:16:
Hoe start je 'm normaal gesproken? Lijkt erop dat je met mogelijk een Python venv werkt. Bovendien staat je zut in je eigen home map. Units draaien tenzij anders aangegeven als root. En dat wil je echt absoluut niet. Zeker voor iets wat je als non-privileged gebruiker prima kan draaien.

Zorg dat je 'programma' fatsoenlijk dingen logt als het wordt gestart en werkt, want nu weten we alleen maar dat het start en stop, maar waarom is totaal onduidelijk.
ubuntu@ubuntu:~$ ./vlxcontrol.py 192.168.1.134 8000

Zo start ik hem, gewoon als de standaard gebruiker. En werkt dan wel normaal.
Dit is het script. Volgens mij (moest het even googlen) draait dit niet in een virtuele Python omgeving.

https://github.com/werner...blob/master/vlxcontrol.py

Ik dacht dus, dat het niet werkt omdat ik het IP en Port toevoeg als argument.
Maar je hebt gelijk, er kunnen andere oorzaken zijn.

[edit]

Wat ik nu zie, is dat het script een "-c" config herleid naar de config file, wellicht
kan ik daar het ip en de poort specificeren. En dat enkel -c in de velux.progconf dan wel voldoet.

[ Voor 8% gewijzigd door ppeterr op 29-09-2021 17:33 ]


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 03-06 22:31

Hero of Time

Moderator LNX

There is only one Legend

Ga ook eens kijken wat de EnvironmentFile nou precies voor wordt gebruikt en hoe dat werkt. En of je python script daar überhaupt fatsoenlijk mee kan werken.

Commandline FTW | Tweakt met mate


  • ppeterr
  • Registratie: Juni 2008
  • Laatst online: 13:42
Ja, ga ik doen. Ik maak volgens mij de fout in wat een argument in de EnvironmentFile is ten opzichte van
de config file die ik ook kan specificeren in het script. Ik duik erin!