Skip to content

python scsript を実行する#

Pythonスクリプトを同時に実行するには、シェルスクリプトでバックグラウンドジョブとしてスクリプトを実行します。& 記号を使用することで、 コマンドをバックグラウンドで実行することができます。

以下は、2つのPythonスクリプト(script1.pyscript2.py)を同時に実行するためのシェルスクリプトの例です:

#!/bin/bash

python3 script1.py &
python3 script2.py &

wait

このスクリプトでは、2つのPythonスクリプトはそれぞれ別のプロセスとしてバックグラウンドで実行されます。 wait コマンドは、スクリプトがすべてのバックグラウンドジョブが終了するのを待つようにします。

このシェルスクリプトを実行可能にするには、以下の手順を実行します:

  1. スクリプトを例えば run_scripts.sh という名前で保存します。
  2. ターミナルで以下のコマンドを実行して、スクリプトに実行権限を与えます:
chmod +x run_scripts.sh
  1. スクリプトを実行します:
./run_scripts.sh

これで、script1.pyscript2.py が同時に実行されるはずです。

スクリプトの終了を判定する#

Python スクリプトが正常に終了したかどうかを判定するためには、子プロセスの終了ステータスを確認します。

以下は、2つのPythonスクリプトを同時に実行し、それぞれの終了ステータスを確認するシェルスクリプトの例です:

#!/bin/bash

python3 script1.py &
pid1=$!

python3 script2.py &
pid2=$!

wait $pid1
status1=$?

wait $pid2
status2=$?

if [ $status1 -eq 0 ] && [ $status2 -eq 0 ]; then
    echo "Both scripts finished successfully!"
else
    echo "At least one of the scripts failed!"
    [ $status1 -ne 0 ] && echo "script1.py failed with exit code $status1"
    [ $status2 -ne 0 ] && echo "script2.py failed with exit code $status2"
fi

このスクリプトの中でやっていることは以下の通りです:

  1. 各Pythonスクリプトをバックグラウンドで実行し、それぞれのプロセスIDを変数(pid1 および pid2)に保存します。
  2. wait コマンドを使用して、各プロセスの終了を待ち、終了ステータスを変数(status1 および status2)に保存します。
  3. ステータスコードをチェックして、どちらのスクリプトが成功/失敗したかを判断します。

上記のシェルスクリプトは、2つのPythonスクリプトの終了ステータスに基づいて、結果を表示します。