FUSE और उसके उपयोग के अधिकार
lsofडिफ़ॉल्ट रूप से उन सभी माउंटेड फाइल सिस्टमों की जांच करता है जिनमें FUSE - फाइल सिस्टम यूजर स्पेस में लागू होते हैं, जिनके लिनक्स में विशेष एक्सेस अधिकार हैं।
जैसा कि आप उबंटू से माउंट जीवीएफएस फाइल सिस्टम (FUSE का विशेष मामला) पर इस उत्तर में देख सकते हैं, यह केवल उस उपयोगकर्ता के लिए ही सुलभ है जिसने इसे (स्वामी के gvfsd-fuse) माउंट किया था । यहां तक कि rootइसे एक्सेस नहीं किया जा सकता। इस प्रतिबंध को ओवरराइड करने के लिए माउंट विकल्पों का उपयोग करना संभव है allow_rootऔर allow_other। विकल्प को FUSE डेमॉन में भी सक्षम किया जाना चाहिए, जो इस उत्तर में उदाहरण के लिए वर्णित है ... लेकिन आपके मामले में आपको एक्सेस अधिकारों को बदलने (और नहीं करना चाहिए) की आवश्यकता नहीं है।
Lsof से फ़ाइल सिस्टम को छोड़कर
आपके मामले lsofमें जीवीएफएस फाइल सिस्टम को जांचने की जरूरत नहीं है, इसलिए आप विकल्प 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
lsof(|और grep के बिना ) जारी करते हैं?