के सेट के लिए सभी खुली फाइलें देनी चाहिए मेरे पास सर्वर पर चलने वाली प्रक्रिया के 30 उदाहरण हैं और विश्लेषण के लिए प्रत्येक प्रक्रिया के लिए खुली फ़ाइलें लॉग करना चाहते हैं।lsof को
* ps auwwx | grep PROG_NAME | awk '{print $2}' | xargs lsof -p | less
यह शिकायतों कि, "lsof: पर स्थिति त्रुटि: इस तरह के कोई फ़ाइल या निर्देशिका"
हालांकि, अगर मैं lsof -p <pid>
चलाने यह मुझे देता है
मैं निम्न आदेश भागा उस प्रक्रिया के लिए खुली फाइलों की सूची। मैं फ्रीबीएसडी मशीन पर प्रक्रिया के सभी 30 उदाहरणों के लिए सभी खुली फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं।
इसके अलावा, मैं साझा पुस्तकालयों को सूचीबद्ध नहीं करना चाहता हूं। अगर मैं -d "^txt"
करता हूं तो यह कुछ अन्य डीबी फाइल नहीं दिखा रहा है जिन्हें मैं दिखाना चाहता हूं। एसएसओ फाइलों को grep करने के लिए कोई और तरीका है?
FYI करें: एक विशिष्ट पैटर्न मिलान आदेशों से सभी खुली फ़ाइलों को सूचीबद्ध करने के
lsof -c
का उपयोग मैं एक ऐसी ही समस्या का समाधान करना चाहता था - खुली फ़ाइलों की संख्या की गणना प्रति प्रक्रिया, विशेष रूप से जावा। मैंने ऐसा किया: 'pgrep जावा | xargs -I {} bash -c 'printf {}; lsof -p {} | wc -l'' –