дождаться ядра после создания раздела с помощью sftdisk на linux

дождаться ядра после создания раздела с помощью sftdisk на linux

Я создаю раздел с помощью 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.

Связанный контент