
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
.