fstype 이상한 동작으로 "찾기" 제외

fstype 이상한 동작으로 "찾기" 제외

"find" 명령으로 "/proc" 파일 시스템을 제외해 보았습니다. 나는 GNU 기반이 아닌 호스트(예: "find"에 "-path" 옵션이 없는 가장 오래된 AIX)에서 사용할 수 있는 휴대용 솔루션을 선호합니다.

Linux 호스트에서 시도한 내용과 부분적으로 필터링된 출력은 다음과 같습니다.

$found/!-fstype 프로세스>/dev/null
찾고 있는 것: `/proc/9475/task/9535/fdinfo/7': 해당 파일이나 디렉토리가 없습니다
찾기: `/proc/10856': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/10856': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/10858': 해당 파일이나 디렉터리가 없습니다.
찾기: `/proc/10858': 해당 파일이나 디렉터리가 없습니다.
찾기: `/proc/15650': 해당 파일이나 디렉터리가 없습니다.
찾기: `/proc/15650': 해당 파일이나 디렉터리가 없습니다.
찾기: `/proc/15654': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15654': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15656': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15656': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15657': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15657': 해당 파일이나 디렉토리가 없습니다.
찾기: `/proc/15663': 해당 파일이나 디렉토리가 없습니다.
등....

"!-fstype proc" 스위치에도 불구하고 "find"가 "/proc" 파일 시스템에서 계속 이동하는 이유를 이해할 수 없습니다.

답변1

~처럼Terden은 설명했다, find디렉토리 /proc는 계속 입력되지만 해당 파일 시스템 유형에 대한 경로 이름은 반환되지 않습니다.

proc파일 시스템 유형이 감지되는 즉시 검색 경로를 제거하려면 다음을 사용하십시오.

find / -fstype proc -prune -o -print

그러나 이전 버전에서 이 작업을 수행하려고 하므로 find-fstype옵션을 사용하지 못할 수도 있습니다. -path(에 대한 표준 옵션 )도 사용할 수 없는 경우 find구현이 분명히 POSIX와 호환되지 않기 때문에 권장 사항을 제시하기가 조금 더 어려워집니다.

선택할 수 있다-xdev이를 사용하면 find시작 경로와 동일한 파일 시스템에 엄격하게 유지됩니다. 그런 다음 find확인하려는 각 파일 시스템에 대해 하나씩 실행 해야 합니다 . .-x-xdev

-type d -name proc -prune이것이 가능하지 않은 경우에는 를 사용하여 이름이 지정된 모든 디렉토리를 무시 해야 할 수도 있습니다 proc.

답변2

-fstype지시문은 find이 파일 시스템 유형에 대한 결과를 반환하지 않도록 지시합니다. 그러나 이것이 디렉토리를 보지 않는다는 의미는 아닙니다 /proc. 이는 proc파일 시스템에서 찾은 파일을 반환하지 않는다는 의미일 뿐입니다 . 그러나 /proc특정 non-proc 파일 시스템이 마운트되어 있는지 알 수 있는 방법이 없기 때문에 여전히 디렉토리를 탐색해야 합니다 /proc/something. 예를 들어 내 Arch에서 다음을 발견했습니다.

$ find /proc ! -fstype proc -printf '%p %F\n' 2>/dev/null 
/proc/sys/fs/binfmt_misc binfmt_misc
/proc/sys/fs/binfmt_misc/CLR binfmt_misc
/proc/sys/fs/binfmt_misc/register binfmt_misc
/proc/sys/fs/binfmt_misc/status binfmt_misc

/proc/sys/fs/binfmt_misc/이는 proc 파일 시스템이 아니기 때문입니다 .

$ mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=51,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12642)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)

/proc따라서 non-proc 파일 시스템이 저장되는 두 개의 마운트 지점이 있습니다 .

따라서 이를 염두에 두고 귀하의 질문에는 오류 메시지만 표시된다는 점에 유의하시기 바랍니다. 이러한 파일은 실제로 반환되지 않으므로 find예상대로 작동하는 것 같습니다. 그 안에 있는 파일을 반복 /proc하지만 파일 시스템에 있는 경우 일치하는 것으로 간주하지 않습니다 proc.

관련 정보