Aguardando que / dev / sda1 fique disponível, com tempo limite, no shell script

1

Eu tenho uma imagem do Linux que, na inicialização, precisa executar um script que será localizado em um thumbdrive conectado. Aqui está o que eu tenho.

mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cd /mnt/usb/DMS
cp script.sh /
chmod +x /script.sh
/bin/sh /script.sh

Este script é adicionado tardiamente nos scripts do sysvinit. Funciona com a maioria das unidades, no entanto, algumas unidades demoram um pouco para serem reconhecidas. Isso significa que meu script falhará, porque /dev/sda1 ainda não está disponível.

Como faço para modificar este script de shell para executar um tempo / esperar no dispositivo, com um tempo limite, se nenhum for encontrado.

pseudocódigo:

counter = 1
while /dev/sda1 not present
   sleep 100
   counter++
   if counter is 50
      exit # no drive ever found
   endif
endwhile

# do stuff with plugged in drive, mount it, whatever

Como faço algo assim em um script de shell?

    
por Paul Knopf 29.09.2016 / 16:46

1 resposta

0

Traduzindo seu pseudo-código diretamente para o shell get

#!/bin/sh
counter=0

while [ ! -e /dev/sda1 ]; do
    sleep 100
    counter=$((counter + 1))
    if [ $counter -ge 50 ]; then
        exit
    fi
done

Opcionalmente, você pode alterar -e /dev/sda1 para -b /dev/sda1 para verificar o dispositivo de bloqueio.

    
por 29.09.2016 / 18:37