यदि, में bash
, मैं निष्पादित करता हूं:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
जहां cmd{1..n}
मैं अलग नहीं हो सकता, मैं पीआईडी कैसे प्राप्त करूं cmdi
? वैकल्पिक रूप से, मैं इस cmdi
प्रक्रिया का संकेत कैसे दे सकता हूं ? (उदाहरण के लिए, इसे भेजने के SIGUSR1
?)
pkill
/ pgrep
, pidof
आदि अच्छा जवाब की तरह लग रही नहीं है के अन्य उदाहरण के बाद से cmdi
शायद, चल ही पाइप लाइन के हिस्से के रूप भी शामिल है। jobs -p
का पीआईडी देता है cmd1
, मेरे लिए।
i
में कुछ भी हो सकता {1..n}
।
cat /var/run/out | nc -l 8080
क्या केवल सतही रूप से समान है cmd1 | cmd2
? आपका बाधा, कि आप नंगे-हड्डियों की पाइपलाइन टाइप करना चाहते हैं और फिर पीआईडी को पुनर्प्राप्त करना चाहते हैं , (1) प्रश्न में नहीं कहा गया है, और (2) एक अच्छे, सामान्य समाधान के लिए अनुमति देने की संभावना नहीं है।
cmd1 | cmd2
एक बहुत ही विशेष मामला है जहां दोनों पीआईडी आसानी से प्राप्त करने योग्य हैं। क्या मैंने n के बारे में कुछ कहा? तो आप n = 2 क्यों मानेंगे? क्या मैंने इस बारे में कुछ कहा कि सेमीडी क्या है? तो आप यह क्यों मानेंगे कि मैं सीमडी को संशोधित कर सकता हूं। मैं एक सामान्य समाधान के लिए कह रहा हूं और आप प्रतिबंध लगा रहे हैं।