पता करें कि एक पाइप के दूसरे छोर पर क्या प्रक्रिया है


34

मैं कुछ प्रक्रियाओं के कुछ अजीब व्यवहार का पता लगाने की कोशिश कर रहा हूं और एक बिंदु पर भाग गया हूं मुझे यकीन नहीं है कि अतीत का पता कैसे लगाया जाए। त्रिशंकु प्रक्रिया, जिसे मैंने उपयोग करने से जोड़ा strace -pथा:

Process 7926 attached - interrupt to quit
read(3, 

ठीक है, इसलिए यह fd 3 पर इनपुट की प्रतीक्षा कर रहा है, इसलिए मैं जाँचने के लिए गया कि यह क्या है:

$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]

ठीक है, तो यह एक पाइप है ... अब सवाल - इस पाइप का लेखक कौन है? मुझे याद है कि लिनक्स पर यूनिक्स डोमेन सॉकेट्स के लिए एक विशेष सुविधा है जहां आप एक फ़ाइल पथ का अनुरोध कर सकते हैं जो "अमूर्त सॉकेट नेमस्पेस" का उपयोग करने के लिए एनयूएल बाइट के साथ शुरू होता है (यहां उल्लेख किया गया है: http://tkhanson.net/cgit.gi /misc.git/plain/unixdomain/Unix_domain_sockets.html )। मुझे यकीन नहीं है कि अगर पाइप के लिए कुछ समान है जिसका मैं फायदा उठा सकता हूं, लेकिन मुझे कुछ भी नहीं मिला है।

मैं एक उपकरण की तरह उम्मीद कर रहा था fuserया lsofमदद कर सकता है, लेकिन मुझे कहीं भी नहीं मिला है।

कोई विचार?

जवाबों:


32

सिम्कलिन सामग्री "पाइप: [20043922]" एक अनूठी आईडी है; पाइप के दूसरे छोर पर एक मेल आईडी होगी।

(find /proc -type l | xargs ls -l | fgrep 'pipe:[20043922]') 2>/dev/null

आपको पाइप के दोनों सिरों को दिखाना चाहिए।


1
अच्छी सोच, धन्यवाद! जाँच करते समय मैं भी यहाँ इस सूत्र में आया हूँ serverfault.com/questions/48330/… तो मैंने सोचा कि मैं यहाँ लिंक भी छोड़ दूंगा बस दूसरों के लिए भी बहुत अच्छा है।
फेटलुर्र

2

आप lsofकमांड का उपयोग करके पाइप का उपयोग करके प्रक्रियाओं की सूची प्राप्त कर सकते हैं :

lsof | grep 'FIFO.*20043922'

आउटपुट पाठकों (एफडी कॉलम में 1r जैसी प्रविष्टियों के साथ) और लेखकों (2w जैसी प्रविष्टियों वाले समान कॉलम) को दिखाएगा।

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