2010-03-22 7 views
105

मैं बैश में एक स्क्रिप्ट Script.sh कहा जाता है, और यह पता करने के लिए अपने स्वयं के पीआईडी ​​लिनक्स/यूनिक्स बैश स्क्रिप्ट कैसे अपने स्वयं के पीआईडी ​​को जानता है?

किसी भी विचार कैसे यह करने के लिए (अर्थात मैं Script.sh अंदर पीआईडी ​​प्राप्त करने की आवश्यकता) जरूरत है?

उत्तर

172

परिवर्तनीय '$$' में पीआईडी ​​है।

38

उपयोग $BASHPID या $$

दोनों के बीच अंतर सहित अधिक जानकारी के लिए manual देखें।

+10

ध्यान दें कि $$ और BASHPID हमेशा एक ही बात नहीं कर रहे हैं - मैनुअल का उल्लेख है यह, और यहां एक और ठोस उदाहरण है: http://tldp.org/LDP/abs/html/internalvariables.html। भेद बहुत महत्वपूर्ण हो सकता है, क्योंकि बहुत सारे बाश संरचनाएं उपशीर्षक में चलती हैं। – Cascabel

+0

@ जेफ्रोमी - नोट किया गया। मैनुअल से जुड़े कारणों में से एक था। – tvanfosson

+0

यह ध्यान दिया जाना चाहिए कि '$ BASHPID' BASH 4 के लिए नया है। यदि आप BASH 3.x का उपयोग कर रहे हैं, तो आपको' $$ ' –

2

आप $$ चर का उपयोग कर सकते हैं।

5

पीआईडी ​​$$ में संग्रहीत है।

उदाहरण: kill -9 $$ उस शेल इंस्टेंस को मार देगा जिसे इसे कहा जाता है।

+0

' kill -9' ('-9' ध्वज के साथ) का उपयोग करना होगा हानिकारक हो और केवल तभी उपयोग किया जाए जब यह बिल्कुल जरूरी हो)। –

+0

इसे "खतरनाक" माना जाता है क्योंकि प्रक्रिया को सिग्नल का जवाब देने का मौका नहीं मिलता है (और संभवतः अपने बाद साफ हो जाता है)। 'मार -9 $$' करना वास्तव में 1 चीज करता है। यह ** वर्तमान खोल प्रक्रिया ** मारता है। यह उपयोगी है अगर आपने शेल सत्र में कुछ किया है जिसे आप '.bash_history' पर नहीं लिखना चाहते हैं, जैसे:' डॉकर रन-पास पासवर्ड = शिकारी 2 ircbot' –

25

Advanced Bash Scripting GuideJefromi द्वारा संदर्भित में दिए गए उदाहरण के लिए इसके अलावा, इन उदाहरणों से पता चलता है कि कैसे पाइप subshells बनाएँ:

$ 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 
+0

क्या आप कृपया "<<<" का अर्थ बता सकते हैं? धन्यवाद। –

+3

यह एक स्ट्रिंग को लूप में रीडायरेक्ट करता है (या कुछ भी जो 'stdin' पढ़ता है)। स्ट्रिंग को "यहां स्ट्रिंग" के रूप में जाना जाता है। –