컴퓨터

[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) 로 조금 전에 실행시킨 작업들을 기다린다.