2012-04-23 3 views
1

나는 아마존 배포판을 스크립팅하고 있으며, 그 단계를 자동화하지 못했습니다.Boto - 새 명령을 실행하기 전에 백그라운드 프로세스 (예 : mdadm)가 끝날 때까지 기다리는 방법은 무엇입니까?

단계는 mdadm을 통해 RAID를 설정 한 다음 새로운 마운트 된 디렉토리에 내 db (mongo)를 설치하는 것입니다. mongo를 설치하기 전에 백그라운드에서 mdadm이 끝날 때까지 기다려야하기 때문입니다. mdadm 명령이 완료되면

Rebuild Status : 2% complete 

이 상태가 사라질 것 : mdadm를 진행률 표시기 등을 생산할 예정이 명령은 아직 진행되면

sudo mdadm --detail /dev/md0 

: 나는 mdadm 명령은 다음 명령을 실행하여 완료되면 알 .

누구나 mdadm이 완료되면 알려줄 수있는 깨끗한 솔루션이있어서 스크립트가 완전히 독립적으로 실행될 수 있으며 mdadm이 완료되면 mongo를 계속 설치할 수 있습니까? 내가 BOTO 사용하여 상자의 종류의 스크립트를 배치 고민하고있어 순간

, BOTO에서 스크립트를 실행하고 구문 분석하고 mdadm 명령은 종료되었다는 것을 읽고 한 번 스크립트 출구를 가진

...

감사합니다 당신의 도움을 많이!

+0

스크립트는 어떤 언어로 작성 되었습니까? bash 스크립트 인 경우 '잘라 내기'로 재생할 수 있습니다. – gabrielhpugliese

+0

제안에 건배 - 나는 그것에 대해 살펴볼 것입니다 - 나는 bash 스크립트를 생각하고 있었기 때문에 미리 다른 것을 설치할 필요가 없습니다! 스크립트를 게시 할 때 게시합니다.) –

답변

0

좋아 ... 나는 I가 내 솔루션을 게시 'll said 정도로 (당신이 improvement을 위해 어떤 조언을 만약 내가 all 귀를 해요 그래서, 쓰기, bash는 스크립트 I 완전히 new 해요!)

#!/bin/bash 

false=1 
true=0 

function drives_are_ready { 
    RAID_INFO=`sudo mdadm --detail /dev/md0` 
    rebuild_status_line_count=`echo "$RAID_INFO" | grep "Rebuild Status" | wc -l` 
    echo `echo "$RAID_INFO" | grep "Rebuild Status"` 
    if ((rebuild_status_line_count == 0)); then 
    return $true 
    else 
    return $false 
    fi 
} 

drives_are_ready 
raid_is_finished=$? 

while ((raid_is_finished == $false)); do 
    echo "RAID isn't finished yet... will check again in 10s" 
    sleep 10s 
    drives_are_ready 
    raid_is_finished=$? 
done 

echo "RAID is done." 

파일을 내 인스턴스로 scp 한 다음 chmod를 실행하고 boto를 통해 스크립트를 실행하십시오.

0

디스크를 사용하기 전에 수퍼 블럭 재 동기화를 기다릴 필요는 없지만 내 경험 에선 ec2 인스턴스를 사용하는 것이 좋습니다.

mdadm --wait /dev/md0 

참고가되지 않은 경우 위의 명령이 0이 아닌 종료 상태를 반환 것입니다 : 내가 사용하고 루프

#!/bin/bash 

... stuff in your script that doesn't require raid ... 

# Pause until mdadm --detail returns nothing 
while [[ `sudo mdadm --detail /dev/md0 | grep 'Rebuild Status'` != '' ]] do 
    sleep 30 
done 

echo "Raid superblock resynchronization complete" 

... stuff in your script that requires raid synchronization to be complete... 
2

동안 단순히 떠들썩한 파티에서 확인 할 수

기다려야 만합니다 ... 스크립트에서이를 고려해야 할 수도 있습니다.

+0

슬프게도 시간 초과를 지정할 방법이 없습니다. – iElectric