내 이전 질문과 관련됨여기. 그래서 다음 스크립트가 있습니다.
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
"무시" 처리는 모든 하위 프로세스에 상속됩니다.