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


53

लिनक्स में अगर आप /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]

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


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

जवाबों:


46

अन्य उत्तरों से परिचित हैं, लेकिन:

lsof | grep 90222668

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


3
आह, बिल्कुल। उम्मीद के मुताबिक काम करता है। आप फाइल डिस्क्रिप्टर नंबर भी बता सकते हैं और कौन सा अंत पाठक है और आउटपुट के चौथे कॉलम को देखकर लेखक है!
कामिल किसियल

मुझे लगता है कि वह संख्या पाइप के लिए पाइप का इनोड नंबर हो सकता है जिसे आप माउंट नहीं कर सकते। मैं फ़ाइलिंग मैपिंग के लिए इनोड प्राप्त करने का एक तरीका ढूंढ रहा हूं, लेकिन यह सबसे अच्छा तरीका हो सकता है। वैसे, मुझे यह सवाल पसंद है :-)
काइल ब्रान्ड

किसी तरह यह मेरे लिए काम नहीं कर रहा है। यह सब आउटपुट पाइप ही है।
रुई मरकज

मानक उपयोगकर्ता के रूप में lsof चलाने से आपको सभी प्रक्रियाओं की जानकारी नहीं मिल सकती है। आमतौर पर आपको गैर-रूट उपयोगकर्ता के रूप में सभी प्रक्रियाओं को देखने की अनुमति नहीं है।
आंद्रे होल्जनर

5
इसके अलावा, आप lsof -n -P | grep 90222668अनावश्यक नाम लुकअप से बचने के लिए उपयोग करना चाह सकते हैं , जिससे इसे गति मिलनी चाहिए।
वोडिन

4

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


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

2

सबसे अधिक जानकारी मुझे पता है कि खुले पाइप कैसे प्राप्त करें

lsof|grep FIFO

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


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