私の以前の質問に関連していますここ。だから、次のスクリプトがあります。
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...
その後、nohup
Pythonスクリプトを呼び出して実行し、完了したら印刷します。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
「無視」処理はすべての子プロセスに継承されます。