저는 스크립팅이 처음입니다...아주 기본적인 작업을 수행할 수 있지만 지금은 도움이 필요합니다.
백업해야 할 때만 마운트하는 로컬 파일 시스템이 있습니다.
이것부터 시작하겠습니다.
#!/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!"