/dev/sda1이 사용 가능해질 때까지 쉘 스크립트에서 기다리는 중(시간 초과)

/dev/sda1이 사용 가능해질 때까지 쉘 스크립트에서 기다리는 중(시간 초과)

부팅 시 삽입된 썸 드라이브에 있는 스크립트를 실행해야 하는 Linux 이미지가 있습니다. 이것이 내가 가진 것입니다.

mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cd /mnt/usb/DMS
cp script.sh /
chmod +x /script.sh
/bin/sh /script.sh

이 스크립트는 나중에 sysvinit 스크립트에 추가됩니다. 대부분의 드라이브에서 작동하지만 일부 드라이브는 인식하는 데 시간이 걸립니다. 이는 내 스크립트가 /dev/sda1아직 사용할 수 없기 때문에 실패한다는 의미입니다 .

잠시 동안 장치에서 실행/대기하고 찾을 수 없는 경우 시간 초과되도록 이 셸 스크립트를 수정하려면 어떻게 해야 합니까?

의사코드:

counter = 1
while /dev/sda1 not present
   sleep 100
   counter++
   if counter is 50
      exit # no drive ever found
   endif
endwhile

# do stuff with plugged in drive, mount it, whatever

쉘 스크립트에서 유사한 작업을 어떻게 수행할 수 있습니까?

답변1

의사 코드를 쉘 get으로 직접 변환

#!/bin/sh
counter=0

while [ ! -e /dev/sda1 ]; do
    sleep 100
    counter=$((counter + 1))
    if [ $counter -ge 50 ]; then
        exit
    fi
done

블록 장치를 확인 -e /dev/sda1하도록 변경하도록 선택할 수 있습니다 .-b /dev/sda1

관련 정보