スクリプトでnohupを複数回実行する

スクリプトでnohupを複数回実行する

私の以前の質問に関連していますここ。だから、次のスクリプトがあります。

requests=(25 50 75 100)
factors=(3 6)
graphsizes=(25 50 75)

for request in "${requests[@]}" 
do
  for factor in "${factors[@]}"
  do
    for size in "${graphsizes[@]}"
    do
        echo "Now Running: n = ${request}, factor = ${factor}, size = ${size}" >> nohup.out
        nohup python3 -u main.py "$request" 50 "$factor" "$size" > ${request}_${factor}_${size}.log 
        echo "Done Running: n = ${request}, factor = ${factor}, size = ${size}" >> nohup.out
    done
  done
done

私の意図:すべてのさまざまなパラメータ置換を順番に実行したいと思いますmain.py(例:print)。Now Running...その後、nohupPythonスクリプトを呼び出して実行し、完了したら印刷します。Done running...

&行の末尾に を追加すると、nohupスクリプトがmain.py完了する前に実行を続けることができることに注意してください。

ただし、そうしないと、&このスクリプトの実行中に現在のシェルプロセスを使用できなくなります。この問題を解決する方法はありますか?

ベストアンサー1

もちろん、ループ全体をバックグラウンドに置くこともできます。例:

for a in 1 2; do
   for b in 11 22; do
      for c in 111 222; do
          sleep 1; echo "$a $b $c"
      done
   done
done &
# notice the '&' at the end of the previous line
echo LOOP DONE
# put other commands here
wait
echo SCRIPT DONE # after 8 seconds

nohup、を使用したくない場合、シグナルはSIGHUP一度だけ無視され、trap '' HUP「無視」処理はすべての子プロセスに継承されます。

おすすめ記事