Linux에서 sftdisk로 파티션을 생성한 후 커널을 기다립니다.

Linux에서 sftdisk로 파티션을 생성한 후 커널을 기다립니다.

Linux에서 sfdisk를 사용하여 파티션을 만들고 있습니다. 파티션 생성 후 파일 시스템을 생성하고 싶습니다.

mkfs.ext3이 파티션을 찾지 못해 실패합니다.

echo ",,L" | sfdisk $DEVICE
mkfs.ext3 $PARTITION

하지만 이것은 작동합니다:

echo ",,L" | sfdisk $DEVICE
sleep 1
mkfs.ext3 $PARTITION

커널이 내부 데이터 구조를 업데이트하는 데 시간이 걸리거나 udev가 장치 노드를 생성하기 전에 스크립트가 다시 예약되는 것 같습니다.

장치 노드가 생성될 때까지 정확히 어떻게 기다리나요? 일정 시간마다 시스템에 부하가 걸려서 이 시간이 충분하지 않을 수 있습니다.

답변1

장치 이름을 미리 알고 있다면 항상 간단한 기술 솔루션이 있습니다.

while [ ! -e /dev/whatever ] ; do 
  sleep .1 # you can sleep for less than a second with coreutils sleep
  # optionally add a counter & timeout
done

답변2

나중에, 하지만 전혀 하지 않는 것보다는 낫습니다. 완전성을 위해.

udevadm settle --timeout=15 --exit-if-exists=$PARTITION

답변3

사용해 보세요inotifywait(inotify-tools에서) 장치 노드에 있습니다. 디렉토리 /dev.

관련 정보