
Я создаю раздел с помощью sfdisk под linux. После создания раздела я хочу создать файловую систему.
Это приводит к ошибке, так как 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
.