일부 서비스 스크립트 상단에 조건을 삽입해야 합니다.장치가 설치되어 있는지 확인.
저는 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