espera pelo kernel depois de criar partição com sftdisk no linux

0

Estou criando uma partição com o sfdisk no linux. Após a criação da partição, quero criar um sistema de arquivos.

Isso falha com o mkfs.ext3 não encontrando a partição:

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

Mas isso funciona:

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

Eu suspeito, ou o kernel leva algum tempo para atualizar suas estruturas de dados internas, ou meu script é agendado novamente, antes que o udev tivesse a chance de criar o nó do dispositivo.

Como posso esperar exatamente até que o nó do dispositivo seja criado? Com cada tempo constante, pode haver um sistema sob carga, onde esse tempo não está garantido.

    
por johannes 08.05.2012 / 14:32

3 respostas

1

Sempre há a solução de baixa tecnologia, se você souber antecipadamente o nome do 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
    
por 08.05.2012 / 19:37
2

Mais tarde, mas melhor que nunca. Para completar.

udevadm settle --timeout=15 --exit-if-exists=$PARTITION
    
por 19.05.2014 / 11:03
1

Tente usar inotifywait (de inotify-tools) no nó do dispositivo. o diretório /dev .

    
por 08.05.2012 / 14:37