SİGORTA ve erişim hakları
lsof
varsayı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 root
erişemiyor bile. Bu kısıtlamayı geçersiz kılmak için seçeneği monte kullanmak mümkündür allow_root
ve 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 -e
seç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
lsof
Sisteminizde ç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 -f
seç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 -e
farklı bir şekilde uygulanabilir):
x=(); for a in $(mount | cut -d' ' -f3); do stat --printf= "$a" 2>/dev/null || x+=("-e$a"); done
lsof
(|
ve grep olmadan )?