目的
pythonで作成したプログラムをシェルから実行する事でsystemd管理をしている。この呼び出しを複数を行いたい場合にシェルスクリプトで並列処理を行う必要が出てきた。
TL;DR
#!/bin/bash
process1(){
/home/shoma/money/mon2.py
}
process2(){
/home/shoma/money/mon2.py
}
# 各プロセスをバックグラウンドで起動する
process1 &
pid1=$!
process2 &
pid2=$!
# 各プロセスの終了を待つ
wait $pid1
wait $pid2
echo "全てのプロセスが完了しました。"
確認
#!/bin/bash
process1(){
/home/shoma/money/mon2.py
}
process2(){
/home/shoma/money/mon2.py
}
# 各プロセスをバックグラウンドで起動する
process1 &
pid1=$!
process2 &
pid2=$!
# 各プロセスの終了を待つ
wait $pid1
wait $pid2
echo "全てのプロセスが完了しました。"
並列処理が行われているはずならば、20秒で実行が完了するはず
root@raspberrypi:/home/shoma# time ./kami.sh
全てのプロセスが完了しました。
real 0m20.015s
user 0m0.005s
sys 0m0.016s
おおすごいちゃんと出来ている。