CWD의 마운트 유형을 감지하는 플랫폼 독립적이며 가벼운 방법이 필요합니다. 특히 CWD가 SSHFS, NFS, CIFS, SMB 또는 로컬 블록 저장소 마운트에 있는지 확인해야합니다.
Mac OSX 10.6, 10.7 및 RHEL5 (최소한)에서이 작업을 수행해야합니다.
df를 사용할 가능성이 있지만 df는이 두 플랫폼에서 상당히 다르게 작동합니다. 또한 CLI를 사용하여 출력을 awk로 긁어 야합니다.
이 정보는 어느 정도 사용 가능해야합니다. 이 정보를 제공 할 수있는 도구를 알고 있습니까?
답변
파일 시스템 유형은 OS 독립적 인 방식으로 쉽게 액세스 할 수있는 것이 아닙니다. 파일 시스템 유형 이름은 OS에 따라 다르므로 표준 방법을 설정하려는 동기가 없었습니다.
비 포함 Linux 시스템 stat -f -c %T .
에서 현재 디렉토리의 파일 시스템 유형을 표시합니다. OSX의 stat
명령에는 이와 같은 것이 없습니다.
파일 시스템 유형이 유한 목록에 있는지 여부 만 알면되므로 Linux에서는 정보를 인쇄 할 경로 세트와 파일 시스템 유형 세트를 모두 제한 할 수 있습니다. 현재 디렉토리의 파일 시스템 유형이 목록에 없으면 오류 ( “df : 파일 시스템이 처리되지 않았습니다”)가 표시됩니다.
if df -t sshfs -t nfs -t cifs . >/dev/null 2>/dev/null; then …
동일한 구문이 OSX에서 작동하거나 작동하지 않을 수 있습니다. 그렇지 않으면을 시도하십시오 df -T sshfs,nfs,cifs .
.
답변
Linux에서 GNU 통계를 사용할 수 있습니다.
stat --file-system --format=%T /tmp/subdir/whatever
tmpfs
답변
Linux에서는 util-linux 2.18부터 findmnt를 사용할 수 있습니다.
findmnt -n -o FSTYPE -T /home
nfs4
답변
테스트하지는 않았지만 df -P
대부분의 플랫폼에서 동일하게 작동해야합니다.
이것은 Linux에서 작동합니다.
$ mount | grep "^$(df -Pk . | head -n 2 | tail -n 1 | cut -f 1 -d ' ') " | cut -f 5 -d ' '
또는 재사용 가능한 기능으로 나누십시오.
# get_mount <directory>
get_mount() {
df -Pk "$1" | head -n 2 | tail -n 1 | cut -f 1 -d ' '
}
# get_fs <mountpoint>
get_fs() {
mount | grep "^$1 " | cut -f 5 -d ' '
}
그리고 함수를 호출 :
get_fs $(get_mount .)
약간 빠른 사용으로 작성하여 다시 할 수 sed
또는 awk
하지만,이 방법은 아마 쉽게 읽을 수 있습니다.
이것이 작동하지 않으면 비슷한 결과를 시도 할 수 있지만 /etc/mtab
의 출력 대신 사용 하십시오 mount
.