GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít python skript pomocí bash skriptu

Můžete použít ! získat PID posledního příkazu.

Navrhoval bych něco podobného následujícímu, které by také zkontrolovalo, zda proces, který chcete spustit, již běží:

#!/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

Potom, když ho chcete zabít:

#!/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

Samozřejmě, pokud k zabití musí dojít nějakou dobu po spuštění příkazu, můžete vše vložit do stejného skriptu:

#!/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

Pokud chcete mít možnost spouštět více příkazů se stejným názvem současně a být schopni je selektivně zabíjet, je potřeba malá úprava skriptu. Řekněte mi, pokusím se vám pomoci!

S něčím takovým máte jistotu, že zabíjíte to, co zabít chcete. Příkazy jako pkill nebo grepping ps aux může být riskantní.


Použijte pkill příkaz jako

pkill -f test.py

(nebo) odolnějším způsobem pomocí pgrep pro vyhledání skutečného ID procesu

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

Nebo pokud je identifikováno více než jedna instance běžícího programu a všechny je třeba zabít, použijte killall(1) na Linuxu a BSD

killall test.py 

Linux
  1. Jak rozdělit řetězec ve skriptu Bash

  2. Zkontrolujte, jak dlouho trvá spuštění Bash skriptu s Time Command

  3. Jak Dockerize Python aplikací s Miniconda

  1. Jak používat export s Pythonem na Linuxu

  2. základní jméno s mezerami ve skriptu bash?

  3. Skript Python nelze zabít pomocí Ctrl-C

  1. Jak automaticky přidat uživatelský účet A heslo pomocí skriptu Bash?

  2. jak použít kill SIGUSR2 v bash?

  3. Jak získat pid procesu a vyvolat na něj kill -9 ve skriptu shellu?