私は必要なものをpythonスクリプトの出力をチェックするRスクリプトの後に、約10時間かかるPythonスクリプトを実行するbashスクリプトを書きます。心配します。ここで私が持っているものです。未知のプロセス番号を持つBash waitコマンドを正しく使用する
ProdRun="python scripts/run_prod.py"
echo "Commencing Production Run"
$ProdRun #Runs python script
wait
DupCompare="R CMD BATCH --no-save ../dupCompareTD.R" #Runs R script
$DupCompare
今私の問題は、多くの場合、Pythonスクリプトは、異なるPIDの多くと、その入力に応じて、当社のLinuxサーバー上の異なるプロセスのヒープ全体を生成することができ、我々は労働者のヒープを持っているということですスクリプトを実行している同じサーバーを使用しています。私が読むことができる限り、 'wait'コマンドはすべてのプロセスが完了するのを待つか、特定のPIDが終了するまで待たなければなりませんが、割り当てられているPIDの数やプロセス数はわかりません。これを使って?
編集:これを助けてくれてありがとう、ここで私はこのことを探している人のために私のジレンマを引き起こした。私はProdRunのpythonスクリプトをそれ自身のスクリプトに分解しましたが、問題は残っていましたが、これらのスクリプトの1つに、もう1つ小さなスクリプトが呼び出されていたことがわかりました。その末尾に "&" Pythonスクリプト自体の内部でそれを待つコマンドは無視されます。これを単に削除し、 "os.system()"の行を挿入すると、すべてのコードを順番に実行することができました。
子プロセスだけを待つことができます。孫のプロセスを待つことはできません。 –
コマンドを格納する変数を使用しないでください。関数を使用します。 – chepner