Я создаю раздел с sfdisk под Linux. После создания раздела я хочу создать файловую систему.

Это терпит неудачу с mkfs.ext3 не находящим раздел:

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

Но это работает:

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

Я подозреваю, что либо ядру потребуется некоторое время для обновления внутренних структур данных, либо мой сценарий снова запланирован, прежде чем udev сможет создать узел устройства.

Как мне ждать, пока не будет создан узел устройства? С каждым постоянным временем может быть система под нагрузкой, где это время не подходит.

3 ответа3

2

Позже, но лучше, чем никогда. Для полноты.

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

Попробуйте использовать inotifywait (из inotify-tools) на узле устройства. каталог /dev .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .