पाइप आपकी प्रक्रिया के खुले दर्जकर्ताओं की सूची में एक प्रविष्टि के रूप में दिखाई देगा:
% ls -l /proc/PID/fd
lr-x------ 1 xyz xyz 64 Feb 11 08:05 0 -> pipe:[124149866]
lrwx------ 1 xyz xyz 64 Feb 11 08:05 1 -> /dev/pts/2
lrwx------ 1 xyz xyz 64 Feb 11 08:05 2 -> /dev/pts/2
lr-x------ 1 xyz xyz 64 Feb 11 08:05 10 -> /tmp/foo.sh
आप भी कुछ इस तरह का उपयोग कर सकते हैं:
% lsof -p PID
sh 29890 xyz cwd DIR 0,44 4096 77712070 /tmp
sh 29890 xyz rtd DIR 0,44 4096 74368803 /
sh 29890 xyz txt REG 0,44 83888 77597729 /bin/dash
sh 29890 xyz mem REG 0,44 1405508 79888619 /lib/tls/i686/cmov/libc-2.11.1.so
sh 29890 xyz mem REG 0,44 113964 79874782 /lib/ld-2.11.1.so
sh 29890 xyz 0r FIFO 0,6 124149866 pipe
sh 29890 xyz 1u CHR 136,2 4 /dev/pts/2
sh 29890 xyz 2u CHR 136,2 4 /dev/pts/2
sh 29890 xyz 10r REG 0,44 66 77712115 /tmp/foo.sh
इसलिए, आपके पास पाइप का इनकोड है :) अब आप /proc/
उस पाइप के लिए हर दूसरी प्रक्रिया को खोज सकते हैं । तब आपके पास कमांड होगी जो आपको पाइप कर रही है:
% lsof | grep 124149866
cat 29889 xyz 1w FIFO 0,6 124149866 pipe
sh 29890 xyz 0r FIFO 0,6 124149866 pipe
इस उदाहरण में, cat
वार्डों को पाइप किया गया sh
। /proc/29889
आप में एक फाइल मिल सकती है cmdline
, जो आपको बताती है, कि वास्तव में क्या कहा गया था:
% cat /proc/29889/cmdline
cat/dev/zero%
कमांड लाइन के क्षेत्र NUL द्वारा अलग किए गए हैं, इस प्रकार यह थोड़ा बदसूरत दिखता है :)