जवाबों:
चर '$ $' में पीआईडी शामिल है।
उपयोग $BASHPID
या$$
अधिक जानकारी के लिए मैनुअल देखें , जिसमें दोनों के बीच अंतर शामिल है।
टी एल; DRTFM
$$
खोल की प्रक्रिया आईडी के लिए फैलता है।
()
सबशेल में, यह इनवॉइसिंग शेल की प्रक्रिया आईडी तक फैलता है, न कि सब-शेल।$BASHPID
मौजूदा बैश प्रक्रिया की प्रक्रिया आईडी का विस्तार करता है।
()
सबशेल में, यह सबशेल की प्रक्रिया आईडी तक फैलता है$BASHPID
BASH 4 के लिए नया है। यदि आप BASH 3.x का उपयोग कर रहे हैं, तो आपको उपयोग करना होगा$$
जेफ्रोमी द्वारा संदर्भित एडवांस बैश स्क्रिप्टिंग गाइड में दिए गए उदाहरण के अलावा , इन उदाहरणों से पता चलता है कि पाइप कैसे सबस्क्रिप्शन बनाते हैं:
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
stdin
) में रीडायरेक्ट करता है । स्ट्रिंग को "यहां स्ट्रिंग" कहा जाता है।
पीआईडी में संग्रहीत किया जाता है $$
।
उदाहरण: kill -9 $$
यह कहा जाता है शेल उदाहरण को मार देगा।
kill -9
( -9
ध्वज के साथ ) को हानिकारक माना जाता है और इसका उपयोग केवल तभी किया जाता है यदि यह बिल्कुल आवश्यक हो)।
kill -9 $$
बिल्कुल 1 काम करता है। यह वर्तमान शेल प्रक्रिया को मारता है । यह उपयोगी है यदि आपने शेल सत्र में कुछ किया है जिसे आप .bash_history
docker run -e PASSWORD=hunter2 ircbot
आप $$
चर का उपयोग कर सकते हैं ।
यदि प्रक्रिया एक बाल प्रक्रिया है और $ BASHPID सेट नहीं है, तो चल रही प्रक्रिया की बनाई गई बाल प्रक्रिया के ppid को क्वेरी करना संभव है। यह थोड़ा बदसूरत हो सकता है, लेकिन यह काम करता है। उदाहरण:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")