lsof: WARNING: fuse.gvfsd-fuse dosya sistemi stat () işlemez.


25

Burada tam olarak ne oluyor?

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.

Bu uyarıyı yalnızca yayınladığınızda alıyor musunuz lsof( |ve grep olmadan )?
Sree

Aynı uyarı her iki şekilde de oluşur, ancak lsofaçık dosyaların büyük bir listesini çıkarır. Bunun bir yan mesele olduğunu düşünüyorum. Belki de dosyanın bir işlem tarafından açık tutulduğunu ve root'un dosyayı taşıyamadığı için sebep olabileceğini düşündüm, ancak durum böyle görünmüyor. Dolayısıyla karışıklık.
jmunsch

1
evet, can't stat...başka bir konu gibi görünüyor . Sanırım asıl sorun, aldığınız No such file or directoryhatadır. Bu aptalca gelebilir, ancak / home / bob / Desktop konumu var mı?
Sree

Yanıtlar:


30

SİGORTA ve erişim hakları

lsofvarsayılan olarak , Linux'ta özel erişim haklarına sahip, kullanıcı alanında uygulanan FUSE - dosya sistemleri dahil tüm dosya sistemlerini kontrol eder .

Bu yanıtta Ubuntu'ya sorduğunuzda görebileceğiniz gibi monte edilmiş bir GVFS dosya sistemine (özel FUSE durumu) normalde yalnızca onu bağlayan kullanıcıya (sahibine gvfsd-fuse) erişilebilir . Hatta rooterişemiyor bile. Bu kısıtlamayı geçersiz kılmak için seçeneği monte kullanmak mümkündür allow_rootve allow_other. Bu seçenek, örneğin bu cevapta açıklanan SİGORTA daemon'unda da etkinleştirilmelidir ... ancak sizin durumunuzda erişim haklarını değiştirmeniz gerekmez (ve edilmemelidir).

Lsof'dan dosya sistemleri hariç

Sizin durumunuzda lsof, GVFS dosya sistemlerini kontrol etmeniz gerekmez; böylece, stat()bu -eseçeneği kullanarak aralarında yapılan aramaları hariç tutabilirsiniz (veya sadece uyarmayı yok sayabilirsiniz):

lsof -e /run/user/1000/gvfs

Bazı dosyaları lsof ile kontrol etme

lsofSisteminizde çalışan tüm işlemler hakkında bilgi almak için kullanıyorsunuz ve yalnızca o zaman tüm çıktıyı kullanarak filtreliyorsunuz grep. Yalnızca belirli dosyaları kontrol etmek istiyorsanız ve ilgili işlemler -fseçeneği, doğrudan izleyen bir değer olmadan seçeneği kullanın ve ardından "seçeneklerin sonu" ayırıcısından sonra dosyaların listesini belirtin --. Bu oldukça hızlı olacaktır.

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

Genel çözüm

Üzerinde stat()başarısız olan tüm bağlı dosya sistemlerini dışlamak için, bunun gibi bir şeyi çalıştırabilirsiniz (in bash):

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

Veya kullandığınızdan emin olmak için stat()( test -efarklı bir şekilde uygulanabilir):

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

11

lsofArgümanlar belirli bir dosya sisteminden hiçbir sonuç gelmeyeceği anlamına gelse bile her zaman tüm dosya sistemleri hakkında bazı temel bilgiler edinmeye çalışır. Bir dosya sistemine erişemiyorsa (özellikle statmesajın yazdığı gibi bağlama noktasında arama yapmak) şikayetçi olur.

Kök olarak, normalde dosya sistemlerine erişme izniniz vardır. Bununla birlikte, FUSE’in iç işleyişi nedeniyle , kök bir FUSE dosya sisteminde tüm yetkilere sahip değildir. Bu bir güvenlik özelliği değildir (kök dosya sistemine sahip olan kullanıcı olabilir ve bu şekilde erişebilir), teknik bir sınırlamadır.

GVFS-FUSE, Gnome uygulamalarının Gnome eklentileri tarafından uygulanan sanal dosya sistemlerine erişmesine izin veren bir mekanizma olan GVFS'ye bir FUSE arabirimidir : GVFS, Gnome uygulamalarının normal dosya sistemi arabirimi aracılığıyla bu sanal dosya sistemlerine erişmesine izin verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.