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


19

CWD의 마운트 유형을 감지하는 플랫폼 독립적이며 가벼운 방법이 필요합니다. 특히 CWD가 SSHFS, NFS, CIFS, SMB 또는 로컬 블록 저장소 마운트에 있는지 확인해야합니다.

Mac OSX 10.6, 10.7 및 RHEL5 (최소한)에서이 작업을 수행해야합니다.

df를 사용할 가능성이 있지만 df는이 두 플랫폼에서 상당히 다르게 작동합니다. 또한 CLI를 사용하여 출력을 awk로 긁어 야합니다.

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

답변:


17

파일 시스템 유형은 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 ..


이것이 바로 내가 필요한 것입니다. 질 당신은 위대하다!
— ARX

7

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

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

하위 디렉토리에서 작동하기 때문에 훌륭합니다. 감사!
— Avindra Goolcharan

4

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

findmnt -n -o FSTYPE -T /home
nfs4

/ home / subdir에서는 작동하지 않으므로 OP에 도움이되지 않습니다.
— Eloff

나를 위해 util-linux 2.23의 findmount를 사용하여 하위 디렉토리에서도 작동합니다.
— rudimeier 2016 년

3

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


P에서는 df -P이 같은 방식으로 행동해야하므로, POSIX입니다. 그러나 파일 시스템 경로에서 마운트 지점으로 이동하는 것이 더 까다 롭습니다.
— Gilles 'SO- 악마 그만해'10

1
디렉토리가 -o 루프로 마운트되어 있으면 솔루션이 안전하지 않은 것 같습니다. 적어도 내 시스템 df에서 사용 된 루프 장치를 보여 주지만 mount는 사용 된 이미지 파일을 보여줍니다. df가 mount와 같은 장치를 표시하지 않는 경우가 더 많을 수 있다고 생각합니다. mount 매뉴얼 페이지의 인용문을 참고하십시오. "목록 모드는 이전 버전과의 호환성을 위해서만 유지됩니다.보다 강력하고 정의 가능한 출력을 위해서는 특히 스크립트에서 findmnt (8)을 사용하십시오."
— rudimeier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.