스크립트를 통해 파일 시스템이 마운트되었는지 확인하는 방법

스크립트를 통해 파일 시스템이 마운트되었는지 확인하는 방법

저는 스크립팅이 처음입니다...아주 기본적인 작업을 수행할 수 있지만 지금은 도움이 필요합니다.

백업해야 할 때만 마운트하는 로컬 파일 시스템이 있습니다.

이것부터 시작하겠습니다.

#!/bin/bash
export MOUNT=/myfilesystem

if grep -qs $MOUNT /proc/mounts; then
  echo "It's mounted."
else
  echo "It's not mounted."; then
  mount $MOUNT;
fi

제가 말했듯이 저는 스크립팅에 있어서 매우 기초적입니다. mount반환 코드를 보면 명령 상태를 확인할 수 있다고 들었습니다 .

RETURN CODES
       mount has the following return codes (the bits can be ORed):
       0      success
       1      incorrect invocation or permissions
       2      system error (out of memory, cannot fork, no more loop devices)
       4      internal mount bug
       8      user interrupt
       16     problems writing or locking /etc/mtab
       32     mount failure
       64     some mount succeeded

어떻게 확인하는지 모르겠어요. 어떤 지침이 있습니까?

답변1

이 명령은 많은 Linux 배포판에서 사용할 수 있습니다 mountpoint. 디렉토리가 마운트 지점인지 여부를 확인하기 위해 명시적으로 사용할 수 있습니다. 다음과 같이 간단합니다.

#!/bin/bash    
if mountpoint -q "$1"; then
    echo "$1 is a mountpoint"
else
    echo "$1 is not a mountpoint"
fi

답변2

mount쉘 특수 매개변수를 사용하여 잘 작성된 실행 파일의 상태 코드를 확인할 수 있습니다 ?.

에서 man bash:

? Expands to the exit status of the most recently executed foreground pipeline.

명령을 실행한 mount직후 실행하면 echo $?이전 명령의 상태 코드가 인쇄됩니다.

# mount /dev/dvd1 /mnt
  mount: no medium found on /dev/sr0
# echo $?
  32

모든 실행 파일에 잘 정의된 상태 코드가 있는 것은 아닙니다. 최소한 성공(0) 또는 실패(1) 코드로 종료되어야 하지만 항상 그런 것은 아닙니다.

예제 스크립트를 확장하고 수정하기 위해 if명확성을 위해 중첩 구조를 추가했습니다. 상태 코드를 테스트하고 작업을 수행하는 유일한 방법은 아니지만 학습할 때 읽기 가장 쉽습니다.

경로의 일부가 일치하지 않도록 설치 경로 주변의 공백을 기록해 두십시오.

#!/bin/bash
mount="/myfilesystem"

if grep -qs " $mount " /proc/mounts; then
  echo "It's mounted."
else
  echo "It's not mounted."
  mount "$mount"
  if [ $? -eq 0 ]; then
   echo "Mount success!"
  else
   echo "Something went wrong with the mount..."
  fi
fi

"종료 및 종료 상태"에 대한 자세한 내용은 다음을 참조하세요.고급 Bash 스크립팅 가이드.

답변3

또 다른 방법:

if findmnt ${mount_point}) >/dev/null 2>&1 ; then
  #Do something for positive result (exit 0)
else
  #Do something for negative result (exit 1)
fi

답변4

짧은성명

확인하다설치된 경우:

mount|grep -q "/mnt/data" && echo "/mnt/data is mounted; I can follow my job!"

확인하다설치되지 않은 경우:

mount|grep -q "/mnt/data" || echo "/mnt/data is not mounted I could probably mount it!"

관련 정보