디렉토리가 bash로 마운트되었는지 확인합니다.
사용하고 있다
mount -o bind /some/directory/here /foo/bar
확인하고 싶다/foo/bar
bash 스크립트를 사용하여 마운트되었는지 확인합니다.그렇지 않으면 위의 mount 명령을 호출하고, 그렇지 않으면 다른 작업을 수행합니다.이거 어떻게 해?
CentOS는 운영체제입니다.
굳이 O/S에 대해 언급하지 않으셨군요.
Ubuntu Linux 11.10(및 대부분의 최신 Linux 버전)은mountpoint
명령어를 입력합니다.
서버 중 하나의 예를 다음에 나타냅니다.
$ mountpoint /oracle
/oracle is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
사실, 당신의 경우,-q
다음과 같은 옵션:
mountpoint -q /foo/bar || mount -o bind /some/directory/here /foo/bar
의 실행mount
인수를 지정하지 않으면 현재 마운트가 표시됩니다.셸 스크립트에서 마운트 지점을 확인할 수 있습니다.grep
및 if 스테이트먼트:
if mount | grep /mnt/md0 > /dev/null; then
echo "yay"
else
echo "nay"
fi
이 예에서 if-statement는 다음 명령어의 종료 코드를 확인하는 것입니다.grep
일치 여부를 나타냅니다.일치하는 항목이 있을 때 출력이 표시되지 않도록 하기 때문에 로 리다이렉트합니다./dev/null
.
의 매뉴얼mountpoint
다음과 같이 말합니다.
는 지정된 디렉토리 또는 파일이 /syslog/self/mountinfo 파일에 기재되어 있는지 여부를 확인합니다.
의 매뉴얼mount
다음과 같이 말합니다.
목록 모드는 하위 호환성을 위해서만 유지됩니다.보다 견고하고 커스터마이즈 가능한 출력을 얻으려면 특히 스크립트에서 findmnt(8)를 사용합니다.
따라서 올바른 명령어는 이며, 이 명령어 자체는 패키지의 일부이며 매뉴얼에 따라 다음과 같습니다.
/etc/fstab, /etc/mtab 또는 /tc/self/mountinfo에서 검색할 수 있습니다.
그래서 실제로 더 많은 것을 검색합니다.mountpoint
또한 다음과 같은 편리한 옵션도 제공합니다.
-M, --마운트포인트 패스
마운트 포인트파일 또는 디렉토리를 명시적으로 정의합니다.'--target'도 참조해 주세요.
요약하면 디렉토리가 bash와 함께 마운트되었는지 여부를 확인하려면 다음을 사용할 수 있습니다.
if [[ $(findmnt -M "$FOLDER") ]]; then
echo "Mounted"
else
echo "Not mounted"
fi
예:
mkdir -p /tmp/foo/{a,b}
cd /tmp/foo
sudo mount -o bind a b
touch a/file
ls b/ # should show file
rm -f b/file
ls a/ # should show nothing
[[ $(findmnt -M b) ]] && echo "Mounted"
sudo umount b
[[ $(findmnt -M b) ]] || echo "Unmounted"
솔루션:
is_mount() {
path=$(readlink -f $1)
grep -q "$path" /proc/mounts
}
예:
is_mount /path/to/var/run/mydir/ || mount --bind /var/run/mydir/ /path/to/var/run/mydir/
마크 J. 보박의 답변은mountpoint
탑재하면 동작하지 않는다bind
옵션을 지정합니다.
Christopher Neylan의 답변에 대해 grep의 출력을 /dev/null로 리다이렉트할 필요는 없습니다.사용하기만 하면 됩니다.grep -q
대신.
가장 중요한 것은 다음과 같이 경로를 정규화하는 것입니다.
- 다음과 같은 경로를 체크하는 경우
/path/to/dir/
백슬래시로 끝남, 경로/proc/mounts
또는mount
출력은/path/to/dir
- 대부분의 Linux 릴리즈에서는
/var/run/
의 심볼 링크입니다./run/
바인드를 마운트하는 경우/var/run/mypath
마운트되어 있는지 확인하면 다음과 같이 표시됩니다./run/mypath
/proc/mounts
.
나는 그 답이 마음에 든다./proc/mounts
단순한 GREP는 좋아하지 않습니다.그러면 잘못된 긍정 결과가 나올 수 있습니다.꼭 알아야 할 것은 "do any any rows have this string for field number 2"입니다.그러니 그 질문을 하세요.(이 경우 확인하겠습니다)/opt
)
awk -v status=1 '$2 == "/opt" {status=0} END {exit status}' /proc/mounts
# and you can use it in and if like so:
if awk -v status=1 '$2 == "/opt" {status=0} END {exit status}' /proc/mounts; then
echo "yes"
else
echo "no"
fi
이 답변은 너무 복잡합니다.마운트가 존재하는지 확인하십시오.
cat /proc/mounts | tail -n 1
마지막으로 마운트된 폴더만 출력합니다.모두 표시하려면 tail 명령을 삭제하십시오.
또 다른 클린 솔루션은 다음과 같습니다.
$ mount | grep /dev/sdb1 > /dev/null && echo mounted || echo unmounted
물론, '에코'는 각각의 경우에 필요한 모든 것으로 대체될 수 있습니다.
.bashrc에서 다음과 같은 별칭을 만들었습니다.
alias disk-list="sudo fdisk -l"
언급URL : https://stackoverflow.com/questions/9422461/check-if-directory-mounted-with-bash
'programing' 카테고리의 다른 글
T-SQL에서 날짜/시간을 문자열로 변환하는 방법 (0) | 2023.04.17 |
---|---|
Excel VBA를 사용하여 MS Access 테이블로 데이터 내보내기 (0) | 2023.04.17 |
VBA에서 전원 쿼리를 자동화하는 방법 (0) | 2023.04.17 |
Windows NT 그룹/사용자에 대한 정보를 가져올 수 없습니다. (0) | 2023.04.17 |
VBA 참조 카운트 - 객체 파괴 (0) | 2023.04.17 |