현재 작업 디렉토리의 fs 유형을 확인하는 방법은 무엇입니까?

현재 작업 디렉토리의 fs 유형을 확인하는 방법은 무엇입니까?

CWD 설치 유형을 감지하려면 가볍고 플랫폼 독립적인 방법이 필요합니다. 특히 CWD가 SSHFS, NFS, CIFS, SMB 또는 로컬 블록 스토리지 마운트에 있는지 확인해야 합니다.

Mac OSX 10.6, 10.7 및 RHEL5(적어도)에서 이 작업을 수행해야 합니다.

df를 사용할 수 있지만 df는 두 플랫폼에서 완전히 다르게 동작합니다. 또한 출력을 긁어내기 위해 awk CLI를 사용해야 했는데 작동했지만... 불안정했습니다.

이 정보는 어느 정도 이용 가능해야 합니다. 이 정보를 제공할 수 있는 내가 모르는 도구가 있습니까?

답변1

운영 체제 독립적인 방식으로 파일 시스템 유형에 쉽게 액세스할 수 없습니다. 파일 시스템 유형 이름은 운영 체제에 따라 다르므로 표준 접근 방식을 설정할 유인이 없습니다.

비포함 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 ..

답변2

Linux에서 GNU 통계를 사용할 수 있습니다.

stat --file-system --format=%T /tmp/subdir/whatever
tmpfs

답변3

Linux에서는 util-linux 2.18부터 findmnt를 사용할 수 있습니다.

findmnt -n -o FSTYPE -T /home
nfs4

답변4

이는 테스트되지 않았지만 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 .)

sedor 를 사용하여 약간 더 빠르게 만들 수 있지만 awk이 방법으로 읽는 것이 더 쉬울 것입니다.

그래도 작동하지 않으면 비슷한 것을 시도해 볼 수 있지만 /etc/mtab대신 출력을 사용하십시오 mount.

관련 정보