[unix] 현재 작업 디렉토리의 fs 유형을 어떻게 확인할 수 있습니까?

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.


답변