GNU/Linux >> Linux の 問題 >  >> Linux

bashスクリプトでpythonスクリプトを強制終了する方法

! を使用できます 最後のコマンドの PID を取得します。

実行したいプロセスがすでに実行されているかどうかも確認する、次のようなものをお勧めします:

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

次に、それを殺したい場合:

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

もちろん、コマンドが起動されてからしばらくして強制終了を行う必要がある場合は、すべてを同じスクリプトに入れることができます:

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

同じ名前の複数のコマンドを同時に実行し、それらを選択的に強制終了できるようにする場合は、スクリプトを少し編集する必要があります。教えてください、私はあなたを助けようとします!

このようなものを使用すると、殺したいものを殺していると確信できます。 pkill のようなコマンド または ps aux を grep します


pkill を使用 コマンド

pkill -f test.py

(または) pgrep を使用したより確実な方法 実際のプロセス ID を検索する

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

または、実行中のプログラムの複数のインスタンスが特定され、それらすべてを強制終了する必要がある場合は、Linux および BSD で killall(1) を使用します

killall test.py 

Linux
  1. Minicondaを使用してPythonアプリケーションをDocker化する方法

  2. Linux 上の Python で export を使用する方法

  3. Ctrl-C で Python スクリプトを強制終了できません

  1. 引数を指定して bash から Python スクリプトを呼び出す

  2. bash スクリプトを実行するには?

  3. プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?

  1. Bashスクリプトをデバッグする方法は?

  2. Bashスクリプトで文字列を分割する方法

  3. 時間コマンドでBashスクリプトの実行にかかる時間を確認する