Script beenden

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Also mit dem "&" bekomme ich noch eine Process ID mit der ich das Script beenden kann.

    Code
    sudo kill Process_ID


    Die ID ändert sich aber mit jedem Start.
    Gibt es auch eine Möglichkeit konstant mit dem gleichen Befehl das Script zu beenden?

  • Entweder:
    1. Prozess ID herausfinden und diese dann killen.

    Oder:
    2. Alle Prozesse mit dem Namen "radio.py" töten.

    Zu 1.:

    Code
    ps aux | grep -v grep | grep radio.py | awk {'print $2'}

    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.:

    Code
    killall -9 radio.py

    Was das macht, siehe Befehle von Fliegenhals (Beitrag#2) :fies:


    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 <<

    :cool:

  • Ich habe das mal mit einem "main.py" Script vom RFID-MP3 Player getestet (weil noch alles gesteckt ist) und dann kommt:

    Code
    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

    Einmal editiert, zuletzt von mex_ (28. Dezember 2014 um 22:37)

  • 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.

  • Code
    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

    Das Script läuft als root und kann auch nur von ihm beendet werden (root kann aber auch Prozesse von anderen beenden).
    Also:

    Code
    sudo kill -s SIGINT $(ps aux | grep -v grep | grep main.py | awk {'print $2'})

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!