`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.