lsof: 경고: stat() 퓨즈.gvfsd-fuse 파일 시스템을 사용할 수 없습니다.

lsof: 경고: stat() 퓨즈.gvfsd-fuse 파일 시스템을 사용할 수 없습니다.

여기서 무슨 일이 일어나고 있는 걸까요?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec  4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.

답변1

FUSE 및 해당 액세스 권한

lsof기본적으로 다음을 포함하여 마운트된 모든 파일 시스템이 검사됩니다.퓨즈- Linux에서 특별한 접근 권한을 가진 사용자 공간에 구현된 파일 시스템입니다.

당신이 본대로Ask Ubuntu에 대한 답변설치됨중력 가속도 센서파일 시스템(FUSE의 특별한 경우)은 일반적으로 이를 설치한 사용자(소유자 gvfsd-fuse)만 액세스할 수 있습니다. 접근 조차 root불가능합니다. 이 제한을 무시하려면 설치 옵션 allow_root및 를 사용할 수 있습니다 allow_other. 이 옵션은 이 섹션에 설명된 대로 FUSE 데몬에서도 활성화되어야 합니다.답변...하지만 귀하의 경우에는 액세스 권한을 변경할 필요가 없으며 변경해서는 안 됩니다.

lsof에서 파일 시스템 제외

귀하의 경우에는 lsofGVFS 파일 시스템을 확인할 필요가 없으므로 stat()다음 옵션을 사용하여 해당 파일 시스템에 대한 호출을 제외 할 수 있습니다 -e(또는 경고를 무시할 수 있습니다):

lsof -e /run/user/1000/gvfs

lsof를 통해 일부 파일 확인

을 사용하여 lsof시스템에서 실행 중인 모든 프로세스에 대한 정보를 얻은 다음 전체 출력 필터링을 사용합니다 grep. 특정 파일만 확인하고 해당 프로세스가 -f해당 값을 직접 따르지 않고 옵션을 사용하는 경우 "옵션 끝" 구분 기호 뒤에 파일 목록을 지정합니다 --. 훨씬 더 빨라질 것입니다.

lsof -e /run/user/1000/gvfs -f -- /tmp/report.csv

범용 솔루션

실패한 마운트된 모든 파일 시스템을 제외하려면 stat()다음과 같은 명령을 실행할 수 있습니다( 에서 bash).

x=(); for a in $(mount | cut -d' ' -f3); do test -e "$a" || x+=("-e$a"); done
lsof "${x[@]}" -f -- /tmp/report.csv

또는 반드시 다음을 사용하십시오 stat()( test -e다양한 방법으로 구현될 수 있음).

x=(); for a in $(mount | cut -d' ' -f3); do stat --printf= "$a" 2>/dev/null || x+=("-e$a"); done

답변2

lsof매개변수가 특정 파일 시스템을 암시하는 경우에도 항상 모든 파일 시스템에 대한 일부 기본 정보를 얻으려고 시도하면 결과가 생성되지 않습니다. 파일 시스템에 액세스할 수 없으면 메시지가 표시됩니다(구체적으로는 stat메시지에 표시된 것처럼 마운트 지점을 호출할 수 없습니다).

루트로서 일반적으로 파일 시스템에 액세스할 수 있습니다. 하지만 내부 작업으로 인해퓨즈, 루트는 FUSE 파일 시스템에 대한 모든 권한을 자동으로 가지지 않습니다. 이는 보안 기능이 아니며(루트는 파일 시스템을 소유한 사용자가 될 수 있으며 해당 방식으로 액세스할 수 있음) 기술적인 제한 사항입니다.

GVFS-FUSE는 FUSE 인터페이스입니다.중력 가속도 센서, Gnome 응용 프로그램이 Gnome 플러그인으로 구현된 가상 파일 시스템에 액세스할 수 있도록 하는 메커니즘: GVFS는 일반 파일 시스템 인터페이스를 통해 비 Gnome 응용 프로그램에 이러한 가상 파일 시스템에 대한 액세스 권한을 부여합니다.

관련 정보