lsof - केवल भौतिक फ़ाइलों के लिए आउटपुट को प्रतिबंधित करता है - कैसे?


30

मैं कैसे बताऊं lsof मुझे केवल भौतिक फ़ाइलों को सूचीबद्ध करने की आवश्यकता है (न कि कुर्सियां, न कि टीसीपी / आईपी कनेक्शन, केवल भौतिक फाइलें)?


पहले आपको यह निर्धारित करने की आवश्यकता है कि आपको इसके लिए क्या चाहिए। "भौतिक फ़ाइलें" कहने के लिए बहुत सामान्य है। lsof आपको वो फाइल देगा जो एक फाइल डिस्क्रिप्टर के साथ खोली गई है। यह आपको फ़ाइलें देगा जो थ्रेड्स द्वारा मेमोरी-मैप की गई फ़ाइलों के रूप में खोली गई हैं। यह आपको लाइब्रेरी की फाइलें देगा जो कि प्रॉसेस द्वारा खोली गई हैं। ये सभी भौतिक फाइलें हैं, लेकिन उनका उपयोग करने का तरीका अलग है।
माइकल मार्टिनेज

जवाबों:


37

बस कुछ मैन पेजों के माध्यम से देखा गया, ऐसा प्रतीत होता है कि आप कमांड का उपयोग करते हैं:

sudo lsof /

यह सभी खुली फाइलों को / निर्देशिका में सूचीबद्ध करेगा, जो कि लिनक्स फाइल सिस्टम पर सब कुछ है। बस परीक्षण किया गया है और यह केवल REG और DIR दिखाता है।

और ज्यादा उदाहरण:

lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /

0-999 इसे फाइल डिस्क्रिप्टर नंबर वाली फाइलों तक सीमित करता है।


2
इसमें एफआईएफओ भी शामिल होंगे।
काइल ब्रान्ड

1
अच्छा और सरल। यदि आपको केवल अंतिम कॉलम की आवश्यकता है तो आप संलग्न कर सकते हैं | awk {'प्रिंट $ 9'} दिलचस्प। मुझे अपने आउटपुट में भी फीफो नहीं मिलती है। फेडोरा 12 और सेंटोस 5.3
एगोर्री

सेंटोस 5.2 और उबंटू 9.04 मेरे लिए फीनो को लौटाते हैं, एक बदलाव हो सकता है, लेकिन क्या आप सुनिश्चित हैं कि पोज़ हैं? मैं इसके लिए सबसे पहले तैयार हो जाऊंगा और सुनिश्चित करूंगा कि यह कोशिश हो,/
काइल ब्रांट

इसके अलावा, मैं सिर्फ नाइटपैकिंग कर रहा था, ऐसा लगता है कि वह सिर्फ शोर नहीं चाहता है, और शायद बहुत सारे पोज नहीं होंगे।
काइल ब्रान्ड

4
lsof / केवल रूट फाइल सिस्टम पर फाइलें शामिल हैं। यदि आपके पास कई फाइल सिस्टम हैं, तो वे आउटपुट में दिखाई नहीं देंगे। मुझे लगता है कि सबसे अच्छा तरीका सिर्फ grep का उपयोग करना है।
जेम्स

9

एक स्विच हो सकता है, लेकिन अगर आपको इसे grep के माध्यम से फ़िल्टर करने में कोई आपत्ति नहीं है, तो आप कर सकते हैं sudo lsof | egrep 'REG|DIR', "भौतिक फ़ाइलों" को मानकर आप नियमित फ़ाइलों और निर्देशिकाओं का मतलब है।

man lsofउस कॉलम में हो सकने वाले सभी प्रकारों के लिए उस व्यक्ति पृष्ठ का OUTPUT :: TYPE अनुभाग देखें ।


24
एक स्विच हो सकता है, लेकिन मैनपेज किसी की पीएचडी थीसिस की तरह पढ़ता है ... :)
Cawflands

1
हाँ ... lsof आदमी को पढ़ना मुश्किल है ...; पी)
व्लादिस्लाव रैस्ट्रुसनी

+1 कि टिप्पणी करें। :)
egorgry

पर्याप्त ग्राहकों के साथ vpn सर्वर पर, lsof वापस नहीं आएगा, इसलिए मेरे लिए ग्रीटिंग एक विकल्प नहीं है
Ohad Cohen

यदि आप इसे ढूंढ रहे हैं तो @OhadCohen lsof वापस आ जाएगा। मैनपेज (मेम, cwd, pd, आदि) में "FD" देखें
माइकल मार्टिनेज

2

यह वही है जो मैंने किया जो मेरे लिए पूरी तरह से काम करता है:

lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u

यह -F nकरने का विकल्प lsofकेवल खुली फाइलों के नामों को प्रिंट करने का कारण होगा । प्रत्येक आउटपुट लाइन जिसमें एक खुली फ़ाइल का नाम है, नाम के तुरंत बाद एकल वर्ण n के साथ शुरू होगा । नियमित फ़ाइलें हमेशा फ़ाइल का पूर्ण, पूर्ण-योग्य नाम होंगी। एक नाम एक साथ शुरू के साथ ही उन पंक्तियों का चयन करेंगे (एक पूर्ण, पूरी तरह से योग्य फ़ाइल नाम जिसका अर्थ है); इस प्रकार खुले पोर्ट, सॉकेट, पाइप (जैसे FIFOs), आदि चीजों को खत्म करना। पहला चरित्र समाप्त कर देगा , केवल फ़ाइल नाम को छोड़कर। फिर अंत में, किसी भी डुप्लिकेट प्रविष्टियों को समाप्त कर देगा।grep ^n//cut -c2-nsort -u

एक चेतावनी, इसमें वे फाइलें शामिल होंगी जो तब तक नियमित नहीं होंगी जब तक उनका नाम a से शुरू नहीं होता है /। उदाहरण के लिए, निम्नलिखित के साथ शुरू होने वाली सभी फाइलें शामिल होंगी:

  • / dev
  • / proc
  • / sys

और आपके ओएस के आधार पर अन्य हो सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.