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 .)
sed
or 를 사용하여 약간 더 빠르게 만들 수 있지만 awk
이 방법으로 읽는 것이 더 쉬울 것입니다.
그래도 작동하지 않으면 비슷한 것을 시도해 볼 수 있지만 /etc/mtab
대신 출력을 사용하십시오 mount
.