Warten auf die Verfügbarkeit von /dev/sda1 (mit Timeout) im Shell-Skript

Warten auf die Verfügbarkeit von /dev/sda1 (mit Timeout) im Shell-Skript

Ich habe ein Linux-Image, das beim Booten ein Skript ausführen muss, das sich auf einem angeschlossenen USB-Stick befindet. Hier ist, was ich habe.

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

Dieses Skript wird spät zu den Sysvinit-Skripten hinzugefügt. Es funktioniert mit den meisten Laufwerken, allerdings dauert es bei manchen Laufwerken eine Weile, bis sie erkannt werden. Das bedeutet, dass mein Skript fehlschlagen wird, weil /dev/sda1es noch nicht verfügbar ist.

Wie ändere ich dieses Shell-Skript, um eine Weile/Wartezeit auf dem Gerät auszuführen, mit einem Timeout, wenn nie etwas gefunden wird.

Pseudocode:

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

Wie führe ich so etwas in einem Shell-Skript aus?

Antwort1

Übersetzen Sie Ihren Pseudocode direkt in Shell get

#!/bin/sh
counter=0

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

Optional können Sie -e /dev/sda1dies ändern -b /dev/sda1, um nach einem Blockgerät zu suchen.

verwandte Informationen