lsof: WARNUNG: Das Dateisystem stat () fuse.gvfsd-fuse kann nicht verwendet werden


25

Was genau passiert hier?

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.

Erhalten Sie diese Warnung, wenn Sie nur lsof(ohne das |und grep) ausgeben ?
Sree

Die gleiche Warnung wird in beiden Fällen ausgegeben, es wird jedoch nur lsofeine große Liste der geöffneten Dateien ausgegeben. Ich denke, es ist ein Nebenthema. Ich dachte, dass die Datei möglicherweise von einem Prozess offengehalten wurde und dass dies möglicherweise der Grund dafür war, dass root die Datei nicht verschieben konnte, aber dies scheint nicht der Fall zu sein. Daher die Verwirrung.
jmunsch

1
Ja, sieht aus wie das can't stat...ist ein anderes Problem. Ich nehme an, das eigentliche Problem ist der No such file or directoryFehler, den Sie bekommen. Das mag idiotisch klingen, aber existiert der Speicherort / home / bob / Desktop?
Sree

Antworten:


30

FUSE und seine Zugriffsrechte

lsofStandardmäßig werden alle gemounteten Dateisysteme überprüft, einschließlich FUSE- Dateisysteme, die im Benutzerbereich implementiert sind und unter Linux über besondere Zugriffsrechte verfügen.

Wie Sie in dieser Antwort auf Ask Ubuntu sehen können, ist ein gemountetes GVFS- Dateisystem (Sonderfall von FUSE) normalerweise nur für den Benutzer zugänglich, der es gemountet hat (der Besitzer von gvfsd-fuse). Auch rootkann nicht darauf zugreifen. Um diese Einschränkung aufzuheben, können Sie die Mount-Optionen allow_rootund verwenden allow_other. Die Option muss auch im FUSE-Dämon aktiviert sein, der zum Beispiel in dieser Antwort beschrieben wird. In Ihrem Fall müssen (und sollten) Sie jedoch die Zugriffsrechte nicht ändern.

Dateisysteme von lsof ausschließen

In Ihrem Fall lsofmüssen Sie die GVFS-Dateisysteme nicht überprüfen, damit Sie die stat()Aufrufe mit der -eOption ausschließen können (oder Sie können das Waring einfach ignorieren):

lsof -e /run/user/1000/gvfs

Überprüfen bestimmter Dateien durch lsof

Sie verwenden lsof, um Informationen zu allen auf Ihrem System ausgeführten Prozessen abzurufen, und filtern erst dann die gesamte Ausgabe mit grep. Wenn Sie nur bestimmte Dateien und die zugehörigen Prozesse überprüfen möchten, verwenden Sie die -fOption ohne einen Wert, der direkt darauf folgt, und geben Sie eine Liste der Dateien nach dem Trennzeichen "Ende der Optionen" an --. Dies wird erheblich schneller sein.

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

Allgemeine lösung

Um alle gemounteten Dateisysteme auszuschließen, auf denen ein stat()Fehler auftritt, können Sie Folgendes ausführen (in bash):

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

Oder um sicher zu gehen stat()( test -ekönnte auch anders implementiert werden):

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

11

lsofversucht immer, einige grundlegende Informationen über alle Dateisysteme abzurufen, auch wenn die Argumente implizieren, dass von einem bestimmten Dateisystem kein Ergebnis kommt. Wenn es nicht in der Lage ist, auf ein Dateisystem zuzugreifen (insbesondere, um statan seinem Einhängepunkt aufzurufen , wie in der Nachricht angegeben), beschwert es sich.

Als Root hätten Sie normalerweise die Berechtigung, auf Dateisysteme zuzugreifen. Aufgrund der inneren Funktionsweise von FUSE verfügt root jedoch nicht automatisch über alle Funktionen eines FUSE-Dateisystems. Dies ist keine Sicherheitsfunktion (root kann der Benutzer werden, der das Dateisystem besitzt und auf diese Weise Zugriff erhält), sondern eine technische Einschränkung.

GVFS-FUSE ist eine FUSE-Schnittstelle zu GVFS. Dies ist ein Mechanismus, mit dem Gnome-Anwendungen auf virtuelle Dateisysteme zugreifen können, die von Gnome-Plugins implementiert wurden: GVFS gewährt Nicht-Gnome-Anwendungen über die reguläre Dateisystemschnittstelle Zugriff auf diese virtuellen Dateisysteme.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.