Hallo,
ich habe von >hier< ein einfachen Radio-Script, welches ich mit
starten kann und mit einem "&" läuft es im Hintergrund.
Mit welchem Befehl kann ich aber dann das Script wieder beenden?
Danke
Hallo,
ich habe von >hier< ein einfachen Radio-Script, welches ich mit
starten kann und mit einem "&" läuft es im Hintergrund.
Mit welchem Befehl kann ich aber dann das Script wieder beenden?
Danke
Script beenden? Schau mal ob du hier fündig wirst!
Mir ist ne komplizierte Variante eingefallen. Was ziehst du vor zum Beenden. Einen Server oder ein Stromsignal über GPIO?
Die Theorie: Wenn das Signal zum Abschalten eintrifft, führt das Script sys.exit() aus.
Stromsignal über GPIO
Das soll dann das Ende des Gedanken sein.
Wollte erst mal schauen wie ich "zu Fuß" das Script beenden kann.
Entweder:
1. Prozess ID herausfinden und diese dann killen.
Oder:
2. Alle Prozesse mit dem Namen "radio.py" töten.
Zu 1.:
Was das macht:
"ps aux" ist der Befehl um die Prozessliste anzuzeigen.
"grep -v grep" sorgt dafür das bei der Ausgabe keine Prozesse mit "grep" aufgelistet werden, wichtig für:
"grep radio.py" sorgt dafür das nur prozesse mit dem Vorkommen von "radio.py" angezeigt werden
"awk {'print $2'}" gibt die 2.Spalte aus (also die PID)
Wenn da keine Ausgabe kommt, gibts auch keinen entsprechenden Prozess.
Zu 2.:
Was das macht, siehe Befehle von Fliegenhals (Beitrag#2)
Es gibt aber auch eine 3. und bessere! Möglichkeit indem du dem Script ein signal schickst sodass sich dieses selber und somit sauber beendet. Siehe dazu >> hier <<
Ich habe das mal mit einem "main.py" Script vom RFID-MP3 Player getestet (weil noch alles gesteckt ist) und dann kommt:
pi@raspberrypi ~ $ sudo python main.py &
[4] 2705
[3] Done sudo python main.py
pi@raspberrypi ~ $ kill -s SIGINT $(ps aux | grep -v grep | grep main.py | awk {'print $2'})
-bash: kill: (2705) - Operation not permitted
-bash: kill: (2706) - Operation not permitted
pi@raspberrypi ~ $
und Script läuft noch
4. Methode: Beim Start des Scriptes erstellt das Script eine Datei mit dem Inhalt "running". Mit nem Thread wird regelmässig gecheckt, ob die Datei das Runnen erlaubt. Per 2.Script oder per Shell kann man die Datei löschen oder verändern. So terminiert der Thread das Script.
Codepi@raspberrypi ~ $ sudo python main.py & [4] 2705 [3] Done sudo python main.py pi@raspberrypi ~ $ kill -s SIGINT $(ps aux | grep -v grep | grep main.py | awk {'print $2'}) -bash: kill: (2705) - Operation not permitted -bash: kill: (2706) - Operation not permitted pi@raspberrypi ~ $
und Script läuft noch
Das Script läuft als root und kann auch nur von ihm beendet werden (root kann aber auch Prozesse von anderen beenden).
Also:
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!