Script de bash para o serviço verificar a montagem antes do início

2

Eu preciso inserir em alguns scripts de serviço uma condição na parte superior para verificar se um dispositivo está montado ou não .

Eu não estou muito familiarizado com o script bash ...

Esta é uma primeira tentativa que escrevi, mas não funciona.

### START CHECK
volume="/media/MyMountName"
if ! mount | grep "on ${volume} type" > /dev/null
then
    exit;
fi
### END CHECK

#... rest of the service script

Esta é outra solução que eu gostaria mais:

### START CHECK
volume="/media/MyMountName"
delay=5

while ! mount | grep "on ${volume} type" > /dev/null
do
    sleep $delay
    if delay >= 60
    then
        exit;
    $delay = $dealy + 5
done
### END CHECK

#... rest of the service script

O segundo deve tentar verificar a montagem por um minuto antes de desistir e sair sem executar o serviço.

    
por Cheshire Cat 04.02.2016 / 12:27

3 respostas

1
while ! mount | grep "on ${volume} type" > /dev/null; do
    sleep $delay
    if [ "$delay" -gt 60 ]; then
        exit
    fi
    delay=$((delay+5))
done

usando /proc/mounts

Você pode considerar usar /proc/mounts em vez da saída de mount (que é apenas /etc/mtab ).

while ! grep " ${volume} " /proc/mounts &>/dev/null; do
    
por 04.02.2016 / 12:36
0

Existem várias respostas para esta questão. Se você quiser verificar se um dispositivo specific está montado ou não (ou seja, seu dispositivo de backup), verifique-o pelo seu UUID, que você pode descobrir emitindo blkid .

UUID="place the UUID here"
TRIES=0
DEVFILE=""

while [[ -z $DEVFILE ]] && [[ $TRIES -lt 5 ]]; do
   DEVFILE=$(blkid -U $UUID)
   TRIES=$(( $TRIES + 1 ))
   sleep 5
done

if [ $TRIES -lt 5 ]; then
   MOUNTPOINT=$(findmnt -f $DEVFILE | tail -n1 | cut -d" " -f1)
   echo "found your device at $MOUNTPOINT"
fi
    
por 04.02.2016 / 13:48
0

Você está bem perto. Que tal:

### START CHECK
start_check_mtpt() { 
 local volume="$1"
 local delay=5
 local tries=$[ 60 / delay ]
 local mounted=0

 while [[ 0 = $mounted ]] && [[ $tries -ge 0 ]]; do
   if cut -d' ' -f2 /etc/mtab | grep -qF "${volume}" ; then
      mounted=1
      # optional: break
   else
    sleep $delay
    let tries=tries-1
   fi
 done
 [[ 1 = $mounted ]]
 return $?
}
### END CHECK

start_check "/media/MyMountName"
    
por 04.02.2016 / 12:42