컴퓨터
[bash] 작업 여러 개 한번에 돌리기 / array 사용
탼
2018. 7. 2. 10:25
어젯밤에 실험 쭉 돌려놓고 아침에 와서 확인해보니 생각보다 몇 개 안돌아있다.
찾아보니가 작업 여러 개를 한번에 돌리고, 중간중간에 기다렸다가(wait) 진행하도록 할 수 있길래 고쳤더니 속도가 훨씬 빠르다.
진작에 이렇게 할걸...
아래 script는
1. array를 선언 및 for문에서 사용하는 방법
2. background에서 process 돌리고, 중간에 기다리는 방법
1. array declare
declare -a VDD_LIST = {"0.60" "0.55" "0.50" "0.45" "0.40"}
for VDD in "${VDD_LIST[@]}"
do
// command, using $VDD variable
done
사실 이렇게 할 거 없이 그냥
ARRAY_NAME = (value1 value2 value3)
요렇게 해도 된다.
2. bash 작업 여러 개 돌리기
for ITER in {1..100}
do
for VDD in "${VDD_LIST[@]}"
do
// invoke background process (command &)
// e.g. sleep 10 && echo "$ITER __ $VDD" &
done
wait $(jobs -p) && echo "Simulation on #$ITER is done"
done
background로 실행(&)하고, 적절한 시점에 wait $(jobs -p) 로 조금 전에 실행시킨 작업들을 기다린다.