सवाल मैं लिनक्स में / proc में खुले पाइप शो पर अधिक जानकारी कैसे प्राप्त कर सकता हूं?


लिनक्स में अगर आप खुदाई करते हैं /proc/<pid>/fd अक्सर आप आउटपुट देखेंगे जैसे:

lrwx------ 1 root root 64 Jul 30 15:14 0 -> /dev/null
lrwx------ 1 root root 64 Jul 30 15:14 1 -> /dev/null
l-wx------ 1 root root 64 Jul 30 15:14 10 -> pipe:[90222668]
lr-x------ 1 root root 64 Jul 30 15:14 11 -> pipe:[90222669]
l-wx------ 1 root root 64 Jul 30 15:14 13 -> pipe:[90225058]
lr-x------ 1 root root 64 Jul 30 15:14 14 -> pipe:[90225059]

मैं खुली पाइप के बारे में अधिक जानकारी कैसे प्राप्त करूं, जैसे कि दूसरी छोर पर कौन सी प्रक्रिया है?


48
2017-07-30 22:18


मूल


पूरी तरह से खोजने के लिए, lsof /proc धीमा है। क्या कोई अधिक प्रभावी समाधान प्रदान कर सकता है? - pihentagy


जवाब:


अन्य उत्तरों के समान, लेकिन:

lsof | grep 90222668

आपको दोनों सिरों को दिखाएगा, क्योंकि दोनों सिरों 'पाइप नंबर' साझा करते हैं।


40
2017-07-31 15:55



आह, ज़ाहिर है। अपेक्षित के रूप में काम करता है। आप फाइल डिस्क्रिप्टर नंबर भी बता सकते हैं और कौन सा अंत पाठक है और आउटपुट के चौथे कॉलम को देखकर लेखक कौन सा है! - Kamil Kisiel
मुझे लगता है कि संख्या पाइप के लिए पाइप की इनोड संख्या हो सकती है जिसे आप माउंट नहीं कर सकते हैं। मैं मैपिंग फाइलनाम करने के लिए इनोड प्राप्त करने का एक तरीका ढूंढ रहा हूं, लेकिन यह सबसे अच्छा तरीका हो सकता है। वैसे, मुझे यह सवाल पसंद है :-) - Kyle Brandt♦
किसी भी तरह यह मेरे लिए काम नहीं कर रहा है। यह सब आउटपुट पाइप ही है। - Rui Marques
मानक उपयोगकर्ता के रूप में lsof चलाना आपको सभी प्रक्रियाओं से जानकारी नहीं दे सकता है। आमतौर पर आपको गैर-रूट उपयोगकर्ता के रूप में सभी प्रक्रियाओं / proc / <pid> / fd निर्देशिका को देखने की अनुमति नहीं है। - Andre Holzner
इसके अलावा, आप का उपयोग करना चाह सकते हैं lsof -n -P | grep 90222668 अनावश्यक नाम लुकअप से बचने के लिए, जो इसे तेज करना चाहिए। - Wodin


दूसरी छोर पर कौन सी प्रक्रिया है यह जानने का एकमात्र तरीका यह है कि / प्रक्रिया में सभी प्रक्रियाओं को लूप करके और उस पाइप का उपयोग कर रहे हैं (यानी, जिसमें एक ही पाइप आईडी में / proc / pid / fd में symlinks है)


3
2017-07-31 00:45



पारितोषिक के लिए धन्यवाद। इसे स्वचालित करने का एक तरीका यह है: ls -l /proc/*/fd/ | grep $PIPE_ID; ls -l /proc/*/fd/$FD | grep $PIPE_ID  पहला ls कमांड पाइप के दोनों सिरों के फ़ाइल डिस्क्रिप्टर प्रिंट करेगा, जबकि दूसरा आपको प्रक्रिया आईडी देगा - Joao Costa


खुली पाइप पर जाने के बारे में मुझे सबसे ज्यादा जानकारी है

lsof|grep FIFO

अभी भी इसके बारे में केवल एक छोर बताता है, मुझे डर है।


1
2017-07-30 22:31



यह वही है जैसा कि मैं / proc से दैवीय कर सकता हूं, मुझे लगता है कि lsof इसे उसी स्थान से प्राप्त करता है। - Kamil Kisiel