GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man Python-Skript mit Bash-Skript beendet

Sie können den ! verwenden um die PID des letzten Befehls zu erhalten.

Ich würde etwas Ähnliches wie das Folgende vorschlagen, das auch überprüft, ob der Prozess, den Sie ausführen möchten, bereits ausgeführt wird:

#!/bin/bash

if [[ ! -e /tmp/test.py.pid ]]; then   # Check if the file already exists
    python test.py &                   #+and if so do not run another process.
    echo $! > /tmp/test.py.pid
else
    echo -n "ERROR: The process is already running with pid "
    cat /tmp/test.py.pid
    echo
fi

Dann, wenn Sie es töten wollen:

#!/bin/bash

if [[ -e /tmp/test.py.pid ]]; then   # If the file do not exists, then the
    kill `cat /tmp/test.py.pid`      #+the process is not running. Useless
    rm /tmp/test.py.pid              #+trying to kill it.
else
    echo "test.py is not running"
fi

Wenn das Töten einige Zeit nach dem Start des Befehls erfolgen muss, können Sie natürlich alles in dasselbe Skript packen:

#!/bin/bash

python test.py &                    # This does not check if the command
echo $! > /tmp/test.py.pid          #+has already been executed. But,
                                    #+would have problems if more than 1
sleep(<number_of_seconds_to_wait>)  #+have been started since the pid file would.
                                    #+be overwritten.
if [[ -e /tmp/test.py.pid ]]; then
    kill `cat /tmp/test.py.pid`
else
    echo "test.py is not running"
fi

Wenn Sie mehrere Befehle mit demselben Namen gleichzeitig ausführen und selektiv beenden möchten, ist eine kleine Bearbeitung des Skripts erforderlich. Sag es mir, ich werde versuchen, dir zu helfen!

Mit so etwas sind Sie sicher, dass Sie töten, was Sie töten wollen. Befehle wie pkill oder grapschen Sie die ps aux kann riskant sein.


Verwenden Sie pkill Befehl als

pkill -f test.py

(oder) eine narrensicherere Methode mit pgrep um nach der tatsächlichen Prozess-ID zu suchen

kill $(pgrep -f 'python test.py')

Oder wenn mehr als eine Instanz des laufenden Programms identifiziert wird und alle beendet werden müssen, verwenden Sie killall(1) unter Linux und BSD

killall test.py 

Linux
  1. Wie fügt man Benutzerkonto UND Passwort automatisch mit einem Bash-Skript hinzu?

  2. Wie übergebe ich Parameter an ein Bash-Skript?

  3. Basisname mit Leerzeichen in einem Bash-Skript?

  4. Rufen Sie das Python-Skript von bash mit Argument auf

  5. wie benutzt man kill SIGUSR2 in bash?

So schreiben Sie ein Bash-Skript mit Beispielen

So führen Sie einen Shell-Befehl mit Python aus

So erstellen Sie Dokumente mit Bash-Skripten

So führen Sie ein Python-Skript in PHP aus

So führen Sie ein Bash-Skript aus

So installieren Sie Python 2.7 unter CentOS 7.1 oder 6.7 mit Anaconda