서비스를 시작하기 전에 마운트된 Bash 스크립트를 확인하세요.

서비스를 시작하기 전에 마운트된 Bash 스크립트를 확인하세요.

일부 서비스 스크립트 상단에 조건을 삽입해야 합니다.장치가 설치되어 있는지 확인.

저는 bash 스크립팅에 익숙하지 않습니다.

처음으로 글을 써보는데 잘 안되네요.

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

#... rest of the service script

제가 가장 좋아하는 솔루션 중 하나는 다음과 같습니다.

### 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

두 번째는 시도해야합니다포기하기 전에 잠시 설치를 확인하십시오서비스를 실행하지 않고 종료합니다.

답변1

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

사용/proc/mounts

/proc/mounts대신에 출력을 사용하는 것을 고려할 수도 있습니다 .mount/etc/mtab

while ! grep " ${volume} " /proc/mounts &>/dev/null; do

답변2

당신은 이미 가까이 있습니다. 어때요?

### 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"

답변3

이 질문에 대한 답변은 여러 가지가 있습니다. 혹시 확인하고 싶으시다면특정한장치가 마운트된 경우(예: 백업 장치) 를 실행하여 찾을 수 있는 UUID로 확인해야 합니다 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

관련 정보