espere el kernel después de crear la partición con sftdisk en Linux

espere el kernel después de crear la partición con sftdisk en Linux

Estoy creando una partición con sfdisk en Linux. Después de la creación de la partición, quiero crear un sistema de archivos.

Esto falla porque mkfs.ext3 no encuentra la partición:

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

Pero esto funciona:

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

Sospecho que el kernel tarda algún tiempo en actualizar sus estructuras de datos internas o que mi script se programa nuevamente antes de que udev tuviera la oportunidad de crear el nodo del dispositivo.

¿Cómo espero exactamente hasta que se cree el nodo del dispositivo? Con cada tiempo constante, puede haber un sistema bajo carga donde este tiempo no sea suficiente.

Respuesta1

Siempre existe la solución de baja tecnología, si conoce de antemano el nombre del dispositivo:

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

Respuesta2

Más tarde, pero mejor que nunca. Por completitud.

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

Respuesta3

Intenta usarinotifywait(de inotify-tools) en el nodo del dispositivo. El /devdirectorio.

información relacionada