Wie übergebe ich beim Autostart von Linux Parameter an ein Programm?
In aller Kürze:
Ich will ein Python (3.9) Programm im Startup von einem Raspberry Pi 4 starten und dabei ein Startargument übergeben. An welcher Stelle muss ich dazu was einfügen
P.S. Ich bin ein Linux Anfänger
4 Antworten
Ich würde dafür einen Cronjob anlegen.
https://wiki.ubuntuusers.de/Cron/
Im Terminal eingeben:
EDITOR=nano crontab -e
Dann eine Zeile einfügen mit:
@reboot name-des-programms parameter
Wobei du name-des-programms und parameter jeweils durch den Namen des Programms und die Parameter ersetzt.
Also z.B.
@reboot python3 /pfad/zum/programm.py --option1 wert1 --option2 wert2
Wenns aus irgend welchen Gründen nicht direkt klappt würde ich den Startbefehl des Programms inkl. Parameter einfach in ein Shell-Script packen und dann das Script stattdessen in den Autostart.
Um einfach ein Programm zu starten, kannst Du einen Autostart-Eintrag machen. Wenn es allerdings eine Art Server sein soll, kommst Du um ein systemd script nicht herum. Dort lassen sich auch Parameter übergeben.
Es soll tatsächlich sowas wie ein Miniserver werden. Warum komm ich da nicht drum rum? Ich hab bereits Programm im Startup gestartet weiß aber nicht wie ich da einen Parameter mit übergeben kann, könntest du mir da ein Beispiel geben?
Systemd ist für sowas einfach standard. Vorher gab es Einträge in /etc/init.d
Hier mal ein Beispiel für einen kleinen Server-Prozess
[Unit]
Description=HT3 Data Collector
After=htproxy.service
[Service]
WorkingDirectory=/usr/local/HT3/sw/
ExecStart=/usr/bin/python3 /usr/local/HT3/sw/ht_collgate.py
SyslogIdentifier=HTCOLLGATE
StandardOutput=syslogStandard
Error=syslogRestartSec=3
KillMode=processRestart=on-failure
[Install]
WantedBy=multi-user.target
Alias=ht_collgate.service
Dankeschön, das funktioniert. Aber leider nur so halb. Aber das liegt wahrscheinlich an meinem Programm. Wie kann ich mir da eine Fehlerausgabe in der Konsole anzeigen lassen oder ganz generell eine Ausgabe auf der Konsole haben?
Natürlich vorausgesetzt, dass ich es über crontab starte