मैं कैसे बताऊं lsof मुझे केवल भौतिक फ़ाइलों को सूचीबद्ध करने की आवश्यकता है (न कि कुर्सियां, न कि टीसीपी / आईपी कनेक्शन, केवल भौतिक फाइलें)?
मैं कैसे बताऊं lsof मुझे केवल भौतिक फ़ाइलों को सूचीबद्ध करने की आवश्यकता है (न कि कुर्सियां, न कि टीसीपी / आईपी कनेक्शन, केवल भौतिक फाइलें)?
जवाबों:
बस कुछ मैन पेजों के माध्यम से देखा गया, ऐसा प्रतीत होता है कि आप कमांड का उपयोग करते हैं:
sudo lsof /
यह सभी खुली फाइलों को / निर्देशिका में सूचीबद्ध करेगा, जो कि लिनक्स फाइल सिस्टम पर सब कुछ है। बस परीक्षण किया गया है और यह केवल REG और DIR दिखाता है।
और ज्यादा उदाहरण:
lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /
0-999 इसे फाइल डिस्क्रिप्टर नंबर वाली फाइलों तक सीमित करता है।
/
एक स्विच हो सकता है, लेकिन अगर आपको इसे grep के माध्यम से फ़िल्टर करने में कोई आपत्ति नहीं है, तो आप कर सकते हैं sudo lsof | egrep 'REG|DIR'
, "भौतिक फ़ाइलों" को मानकर आप नियमित फ़ाइलों और निर्देशिकाओं का मतलब है।
man lsof
उस कॉलम में हो सकने वाले सभी प्रकारों के लिए उस व्यक्ति पृष्ठ का OUTPUT :: TYPE अनुभाग देखें ।
यह वही है जो मैंने किया जो मेरे लिए पूरी तरह से काम करता है:
lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u
यह -F n
करने का विकल्प lsof
केवल खुली फाइलों के नामों को प्रिंट करने का कारण होगा । प्रत्येक आउटपुट लाइन जिसमें एक खुली फ़ाइल का नाम है, नाम के तुरंत बाद एकल वर्ण n के साथ शुरू होगा । नियमित फ़ाइलें हमेशा फ़ाइल का पूर्ण, पूर्ण-योग्य नाम होंगी। एक नाम एक साथ शुरू के साथ ही उन पंक्तियों का चयन करेंगे (एक पूर्ण, पूरी तरह से योग्य फ़ाइल नाम जिसका अर्थ है); इस प्रकार खुले पोर्ट, सॉकेट, पाइप (जैसे FIFOs), आदि चीजों को खत्म करना। पहला चरित्र समाप्त कर देगा , केवल फ़ाइल नाम को छोड़कर। फिर अंत में, किसी भी डुप्लिकेट प्रविष्टियों को समाप्त कर देगा।grep ^n/
/
cut -c2-
n
sort -u
एक चेतावनी, इसमें वे फाइलें शामिल होंगी जो तब तक नियमित नहीं होंगी जब तक उनका नाम a से शुरू नहीं होता है /
। उदाहरण के लिए, निम्नलिखित के साथ शुरू होने वाली सभी फाइलें शामिल होंगी:
और आपके ओएस के आधार पर अन्य हो सकते हैं।