次のように、シェルスクリプトからまとめて開始するPythonスクリプトがいくつかあります。
#!/bin/bash
python prog1.py &
python prog2.py &
python prog3.py
私は開発しているので、これらのプロセスを停止したいことがよくあります。通常は ctrl+C を押してこれを行いますが、残念なことに、いくつかの python プログラムが (zeromq) ソケットを開いたままにします。これは、手動でそれらを見つけ (私はlsof -iを使用)、PID を使用してそれらを強制終了する必要があることを意味します。
そのため、ctrl+C を押したときにシェルからこれらの python プロセスを自動的に強制終了する簡単な方法を探しています。ここStackoverflowの別のスレッドで、必要なことを行うはずのコードを見つけました。コードについて何も理解していないだけで、自分のニーズに合わせて調整する方法もわかりません。
ここで私を助けてくれる人はいますか?
cat >work.py <<'EOF'
import sys, time, signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
for i in range(10):
time.sleep(1)
print "Tick from", sys.argv[1]
EOF
chmod +x work.py
function process {
python ./work.py $1
}
process one &
wait $!
echo "All done!"