답변:
명령 df(1)
은 하나 이상의 인수를 사용하여 해당 파일 또는 디렉토리가있는 마운트 포인트 및 장치와 사용 정보를 리턴합니다. 그런 다음 경로 또는 장치를 사용하여 출력에서 mount -v
또는 유사한 파일 시스템 유형을 찾을 수 있습니다.
불행하게도, 출력 모두의 형식 df
과 mount
시스템에 의존하다; 적어도 Solaris, NetBSD 및 Mac OS X 사이에서 볼 수 있듯이 명백한 표준은 없습니다.
df /path-to-the-directory
당신에게 그 디렉토리의 포함 된 파티션을 줄 것이다
stat 사용할 수 있습니다 . stat --printf '% d'filename.txt 명령 은 장치 번호를 16 진수 / 10 진수로 반환합니다.
stat --printf "%d"
장치의 부 번호를 알려주지 만 장치 이름과 마운트 된 파일 시스템을 얻기 위해 수행해야 할 작업이 더 있습니다.
stat --format '%m' $file
마운트 지점 stat --file-system --format '%T' $mount
을 제공하고 파일 시스템 유형 이름을 제공 할 수 있습니다.
사용하는 한 가지 df
단점은 출력의 장치 이름이 길면 줄이 줄 바꿈되므로 마지막 줄을 잡을 수 없다는 것입니다. 대신 첫 번째 줄을 제거한 다음 새 첫 줄을 잡고 첫 번째 필드를 인쇄하십시오.
#!/usr/bin/env bash
path=$1
curdir=$(pwd)
cd $path
df . | tail -n +2 | head -1 | awk '{print $1}'
cd $curdir
Linux에서는 df 및 btrfs에 문제가있는 것 같습니다. df에게 마운트 된 btrfs 볼륨의 마운트 지점을 찾도록 요청하면 올바른 작업을 수행합니다. 이 경우 joe는 / m / whale / backup의 하위 디렉토리입니다.
# df /srv/backup/joe
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md126 2930135488 307676684 2619663252 11% /m/whale/backup
그러나 참조되는 디렉토리가 하위 볼륨 인 경우 더 이상 마운트 지점을 알려주지 않습니다.
# df /srv/backup/joe/code
Filesystem 1K-blocks Used Available Use% Mounted on
- 2930135488 307676684 2619663252 11% /a/whale/backup/joe/code
/ a / whale / backup은 커널에 따라 유일한 마운트 지점입니다.
# mount | grep whale
/dev/md126 on /a/whale/backup type btrfs (rw,relatime,space_cache)
Fstat, stat도 같은 일을합니다 :
# stat --printf '%m\n' /srv/backup/joe/code
/a/whale/backup/joe/code
에서 /programming/2167558/give-the-mount-point-of-a-path :
df -P $path | tail -1 | awk '{ print $NF}'
* BSD 및 sysV 및 엉뚱한 자동 마운트 디렉토리에 대해 테스트 한 모든 곳에서 작동합니다. 실패한 사례에 대해 기뻐합니다.
df -P
POSIX 호환 시스템에서 표준화 된 출력을 생성해야합니다. 일부 구 피어 시스템은 POSIXLY_CORRECT와 같은 마법 환경 변수도 설정해야합니다.