`Lsof -p <pid> के बीच क्या अंतर है? wc -l` और `ls / proc / <pid> / fd | wc -l`?


13

पृष्ठभूमि: मैं एक विशेष उपयोगकर्ता के लिए चल रही प्रक्रियाओं के लिए ulimit की निगरानी के साथ खेल रहा हूँ। (मैंने कभी-कभी ऐसी प्रक्रियाएँ देखीं जो एक गलत सीमा के साथ शुरू हो रही थीं।) मैंने एक जोड़े को स्व-चालित लिनक्स गुरु से पूछा, और एक ने सुझाव दिया lsof -p <pid>, जबकि दूसरे ने सुझाव दिया ls /proc/<pid>/fd, लेकिन न तो सकारात्मक था, जिसके बारे में अधिक सटीक रूप से अधिकतम की ओर वास्तविक गिनती को दर्शाता है। खुली फ़ाइलें एक प्रक्रिया के लिए सीमा।

तो, यह कौन सा है?

lsof -p <pid> | wc -l

या

ls /proc/<pid>/fd | wc -l

कृपया अंतर पर विस्तार से बताएं। धन्यवाद!


3
होमवर्क जैसा लगता है।
— इविवि

1
होमवर्क नहीं। बेहतर स्पष्टीकरण जोड़ा गया। मैंने lsofमैन पेज पढ़े थे , और जब मुझे संदेह हुआ कि यह उत्तर मेमोरी-मैप्ड फाइलें थीं, तो मुझे एक अधिक अनुभवी व्यक्ति की पुष्टि चाहिए थी।
— जेरेड

जवाबों:


10

lsofआपको मेमोरी मैप्ड .so-files भी देगा - जो कि तकनीकी रूप से वैसी नहीं है जैसा कि फ़ाइल हैंडल पर नियंत्रण है। /proc/<pid>/fdओपन फाइल डिस्क्रिप्टर के लिए मापने का बिंदु है - हालांकि: प्रोक-मैन पेज में उल्लेखित है - यदि एक मल्टीथ्रेड प्रोग्राम के मुख्य धागे को समाप्त कर दिया गया है, तो यह निर्देशिका अनुपलब्ध होगी।

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lआप के रूप में एक ही आइटम दिखाएगा ls /proc/<pid>/fd | wc -l।

स्मृति मानचित्र में उपलब्ध है /proc/<pid>/maps।


lsofआप लगभग एक ही उत्पादन देता है, लेकिन यह भी शामिल है cwd, rtdऔर txtफ़ाइल वर्णनकर्ता।
— इयान बामफोर्थ

यह भी ध्यान दें कि बीच में रिक्त स्थान की संख्या COMMANDऔर PIDभिन्न हो सकते हैं। [[:space:]]*इसे और अधिक सामान्य बनाने के लिए रिक्त स्थान बदलें ।
— इयान बामफोर्थ

मैं भी lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l यहाँ पाया , जबकि lsofAndroid खोल ( adb shell) समर्थन नहीं करता है -aऔर -d। इसलिए मैं आखिरकार Kvisle के संस्करण का उपयोग करता हूं।
— वीकेंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.