Forum: PC-Programmierung python Skript dauerhaft ausführen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von python_user (Gast)


Lesenswert?

Guten Morgen,

auf dem raspryy pi soll ein python Skript dauerhaft ausgeführt werden.
Sobald ich putty beende wird das Skript nicht mehr ausgeführt.
Im Netz habe ich gelesen es gibt da ein Befehl "crontab".
Damit lässt sich ein Skript auerhaft ausführen.

Nun weiß ich nicht wie das mit crontab ablaufen soll und wie das 
umgesetzt werden kann.

Für jede Unterstützung bin ich dankbar.

von Norbert (Gast)


Lesenswert?

python_user schrieb:
> Im Netz habe ich gelesen es gibt da ein Befehl "crontab".
> Damit lässt sich ein Skript auerhaft ausführen.

Siehst du, das ist das Problem mit dem Netz.
Es erzählt Dinge, oftmals Quatsch. So wie hier.

Du möchtest vielleicht man die man-page von nohup lesen.

von Oliver S. (oliverso)


Lesenswert?

Du tippst "crontab" in die Suchmaschinen deines Vertrauens, und liest 
dann einfach eine der unzähligen Anleitungen, wie man das nutzt.

Das Vorgehen, wie man an solche Infos kommt, mag ungewohnt sein, 
funktioniert aber ausgezeichnet.

Oliver

von Norbert (Gast)


Lesenswert?

Oliver S. schrieb:
> Du tippst "crontab" in die Suchmaschinen deines Vertrauens, und
> liest
> dann einfach eine der unzähligen Anleitungen, wie man das nutzt.
>
> Das Vorgehen, wie man an solche Infos kommt, mag ungewohnt sein,
> funktioniert aber ausgezeichnet.
>
> Oliver

Tja, das Problem ist jedoch:
Er will es nicht in regelmäßigen Intervallen starten, er will es starten 
und es soll weiter laufen wenn das Terminal geschlossen wird.

von imonbln (Gast)


Lesenswert?

python_user schrieb:
> auf dem raspryy pi soll ein python Skript dauerhaft ausgeführt werden.

Das Zauberwort heißt (systemd) Service und schon läuft das Python Script 
dauerhaft. Hier ist ein Beispiel 
https://github.com/torfsen/python-systemd-tutorial

von abc (Gast)


Lesenswert?

Oder einfach in Screen ausführen

von python_user (Gast)


Lesenswert?

Exakt das Programm dauerhaft laufen auch wenn putty beendet wird.

von python_user (Gast)


Lesenswert?

systemd funktioniert. Danke.

von Andi (Gast)


Lesenswert?

imonbln schrieb:
> Das Zauberwort heißt (systemd) Service und schon läuft das Python Script
> dauerhaft.

Oder auch cron, @reboot ist dabei das Zauberwort...

von MaWin (Gast)


Lesenswert?

Andi schrieb:
> Oder auch cron, @reboot ist dabei das Zauberwort...

Wobei diese Lösung deutlich schlechter als systemd ist.
Systemd bietet auch andere nützliche Dinge, wie z.B. den Neustart des 
Services, falls er crasht.

von diePoetteringdie (Gast)


Lesenswert?

> Systemd bietet auch andere nützliche Dinge

Das kommt dir nur so vor.

Es gibt Systeme die wissen gar nicht was Systemmd ist
und trotzdem koennte man bei denen ein Pythonscript
automatisch im Hintergrund laufen lassen.
Selbst mein altes Dummfon mit Symbian V3 kann das.

von Rolf M. (rmagnus)


Lesenswert?

diePoetteringdie schrieb:
>> Systemd bietet auch andere nützliche Dinge
>
> Das kommt dir nur so vor.

Nein, er bietet tatsächlich nützliche Dinge.

> Es gibt Systeme die wissen gar nicht was Systemmd ist
> und trotzdem koennte man bei denen ein Pythonscript
> automatisch im Hintergrund laufen lassen.

Keiner hat behauptet, dass es ohne systemd nicht möglich wäre. Aber wenn 
er eh schon da ist, kann man man ihn auch dafür nutzen.

von MaWin (Gast)


Lesenswert?

diePoetteringdie schrieb:
> Das kommt dir nur so vor.

Selten einen dämlicheren Kommentar gelesen als deinen.

von python_user (Gast)


Lesenswert?

Mit systemd programm_name.py wird nun dauerhaft im Hintergrund das 
Skript ausgeführt.
Wie beendet man nun wieder diesen Vorgang?

von python_user (Gast)


Lesenswert?

Jetzt kann ich mein Skript nicht mehr mit systemd starten

sudo systemd pythonsckript.py

> Meldung: Excess arguments

von Norbert (Gast)


Lesenswert?

python_user schrieb:
> Mit systemd programm_name.py wird nun dauerhaft im Hintergrund das
> Skript ausgeführt.
> Wie beendet man nun wieder diesen Vorgang?

Hmmm, mal überlegen.
Es gibt systemctl start »service«
Es gibt auch systemctl status »service«

Wenn die mal nicht das Wichtigste vergessen haben…

von 🐧 DPA 🐧 (Gast)


Lesenswert?

python_user schrieb:
> sudo systemd pythonsckript.py

LOL. Ist das echt, oder werden wir gerade veräppelt?

von python_user (Gast)


Lesenswert?

Sorry aber egal was es funktioniert bei mir nicht. Ich möchte nur ein 
python skript dauerhaft starten AUCH WENN PUTTY BEENDET wird.

von Jack V. (jackv)


Lesenswert?

python_user schrieb:
> Ich möchte nur ein
> python skript dauerhaft starten AUCH WENN PUTTY BEENDET wird.

DANN NIMM DOCH EINFACH SCREEN ODER TMUX, ODER LIES ZU NOHUP!!!

von Ergo70 (Gast)


Lesenswert?

nohup python pythonscript.py

von Christian M. (christian_m280)


Lesenswert?

python_user schrieb:
> dauerhaft starten

python_user schrieb:
> dauerhaft laufen

Aha, was jetzt, Du Troll!

Gruss Chregu

von Norbert (Gast)


Lesenswert?

20.05.2022 10:07

von python_user (Gast)


Lesenswert?

Da es bei mir mit systemd nicht funktioniert (weiß nicht warum) 
funktioniert das mit nohup nun. Dank euch allen

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Ich verwende manchmal noch "at". Ich habe auch noch ssmtp eingerichtet, 
dann bekomme ich auch noch ein Mail am schloss. "at now <<<'befehl bla 
bla bla'". Statt now kann man auch eine Urzeit, ein Datum, etc. angeben.

von MaWin (Gast)


Lesenswert?

python_user schrieb:
> Da es bei mir mit systemd nicht funktioniert (weiß nicht warum)

Ja. Weil du es völlig falsch verwendest.

Du musst in einem service file deinen Service kurz beschreiben.
Woher soll systemd auch sonst wissen, wie es deinen service starten 
soll. Da gibts tausende Möglichkeiten.

Und dann kannst du den Service mit systemctl start/stop mein.service 
starten und stoppen.

von diePoetteringdie (Gast)


Lesenswert?

> Selten einen dämlicheren Kommentar gelesen als deinen.
Ach ja, das ist ja dir vorbehalten.
Oder einem deiner Genomklone.

> funktioniert das mit nohup nun
Eben, poettering braucht keiner.

von MaWin (Gast)


Lesenswert?

diePoetteringdie schrieb:
> Eben, poettering braucht keiner.

Achso. Aha.
Wie geht automatischer Restart denn mit nohup?
Ich frickele mir mein eigenes Shellscript für dieses Feature?

Ich habe vollstes Verständnis dafür, dass Leute Systeme ohne Systemd 
betreiben wollen.
Das soll jeder für sich entscheiden.

Ich hatte lediglich gesagt, dass man mit systemd mehr sehr nützliche 
Dinge bekommt, als simple nohup-Funktion.
Und das hast du zum Anlass genommen mich anzufurzen.
Ziemlich erbärmlich.

von Rolf M. (rmagnus)


Lesenswert?

python_user schrieb:
> Da es bei mir mit systemd nicht funktioniert (weiß nicht warum)
> funktioniert das mit nohup nun. Dank euch allen

Sind halt zwei ganz unterschiedliche Dinge, aber wenn's so passt, ist ja 
alles gut.

von Sebastian W. (wangnick)


Lesenswert?

Hallo python_user,

python_user schrieb:
> Da es bei mir mit systemd nicht funktioniert (weiß nicht warum)
> funktioniert das mit nohup nun. Dank euch allen

Ich habe hier ein python-Skript dass über systemd gestartet und 
überwacht wird. Meine service-Datei (sma-bt.service) sieht so aus:
1
[Unit]
2
Description=Read data from SMA inverters via Bluetooth and emit via MQTT
3
After=multi-user.target
4
5
[Service]
6
Type=notify
7
ExecStart=/usr/bin/python3 /home/pi/sma-bt.py
8
Restart=always
9
RestartSec=30s
10
WatchdogSec=5s
11
StandardOutput=syslog
12
13
[Install]
14
WantedBy=multi-user.target

Im python-Script verwende ich dann sdnotify 
(https://pypi.org/project/sdnotify/) um systemd das Ende des Startups zu 
signalisieren und um den systemd-Watchdog regelmäßig zu füttern (falls 
das Skript sich aufhängt wird es von systemd neu gestartet), und logging 
(Standardmodul) für Ausgaben die in /var/log/syslog landen sollen.

YMMV

LG, Sebastian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.