मेरे बच्चे की पीजीआईडी ​​माता-पिता की पीआईडी ​​क्यों नहीं है?


13

इसलिए मैं हर जगह यह पढ़ता रहता हूं कि यह आदेश मूल प्रक्रिया की सभी बाल प्रक्रियाओं को समाप्त कर दे:

kill -- -$$

किल कमांड के साथ एक नकारात्मक आईडी का उपयोग करना पीजीआईडी ​​का संदर्भ देता है और मैंने जो उदाहरण देखा है उससे प्रतीत होता है कि बच्चे की प्रक्रियाओं का पीजीआईडी ​​माता-पिता का पीआईडी ​​होना चाहिए लेकिन मेरे सिस्टम पर ऐसा नहीं है।

मेरे सिस्टम पर बच्चे की पीजीआईडी ​​वही है, जो मूल स्क्रिप्ट के पीजीआईडी ​​की है, जो बैश हो जाती है।

यहाँ क्या चल रहा है? क्या उदाहरण गलत थे या क्या मेरा सिस्टम अलग तरीके से स्थापित है?

माता-पिता को समाप्त किए बिना मुझे बाल प्रक्रियाओं को समाप्त करने के लिए क्या हासिल करना है, इसलिए मैं माता-पिता को पीजीआईडी ​​में एक किल सिग्नल नहीं भेजना चाहता हूं।

जवाबों:


11

मुझे लगता है कि आपका मतलब पीजीआईडी ​​है, जो प्रोसेस ग्रुप आईडी के लिए है

जब एक प्रक्रिया को कांटा जाता है, तो यह अपने मूल से अपने पीजीआईडी ​​को प्राप्त करता है। पीजीआईडी ​​तब बदलती है जब एक प्रक्रिया समूह का नेता बन जाता है , फिर उसके पीजीआईडी ​​को उसके पीआईडी ​​से कॉपी किया जाता है। तब से, नया बच्चा उसे पैदा करता है, और उसके वंशज, उस पीजीआईडी ​​(जब तक कि वे अपने स्वयं के नए प्रक्रिया समूह शुरू नहीं करते हैं) को विरासत में मिलाते हैं।

नौकरी पर नियंत्रण के साथ एक शेल में, जैसे कि अधिकांश इंटरैक्टिव गोले, प्रत्येक नौकरी को अपने स्वयं के प्रक्रिया समूह में रखा जाता है। यदि आप एक शेल स्क्रिप्ट चलाते हैं, तो स्क्रिप्ट चलाने वाली शेल प्रक्रिया समूह लीडर होगी, और PGID इसके PID के बराबर होगा।

नौकरी नियंत्रण के बिना एक शेल में, जैसे कि अधिकांश शेल स्क्रिप्ट चलाने के लिए उपयोग किए जाते हैं, शेल के प्रक्रिया समूह में कमांड चलाए जाते हैं।

वाक्यविन्यास kill -- -Nपीजीआईडी ​​= एन के साथ समूह में सभी प्रक्रियाओं को मारता है। आप इसका उपयोग एक मनमाने ढंग से पीआईडी ​​के साथ नहीं कर सकते हैं, केवल प्रक्रिया समूह के नेता का पीआईडी, क्योंकि यह पीजीआईडी ​​है। यह अनिवार्य रूप से शेल का तरीका है

kill %jobid

सिंटैक्स काम करता है - यह आंतरिक रूप %jobidसे नौकरी के पीजीआईडी ​​में अनुवाद करता है और उस पीजीआईडी ​​को संकेत भेजता है।

किसी अन्य शेल स्क्रिप्ट से अपने स्वयं के प्रक्रिया समूह में स्क्रिप्ट चलाने का कोई सरल तरीका नहीं है। यद्यपि कुछ सुझावों के लिए शेल स्क्रिप्ट का प्रोसेस समूह कैसे सेट करें, देखें ।


क्या आप कह रहे हैं कि नौकरी नियंत्रण के साथ या बिना एक शेल एक ही काम करता है?
TCZ8

1
नहीं, नौकरी नियंत्रण के साथ एक शेल प्रत्येक नौकरी के लिए एक नई प्रक्रिया समूह शुरू करता है। नौकरी नियंत्रण के बिना एक शेल प्रत्येक नौकरी के लिए एक नया प्रक्रिया समूह शुरू नहीं करता है, यह उन्हें अपने स्वयं के प्रक्रिया समूह में चलाता है।
बामर

वाह .. मैंने पहली बार सही नहीं पढ़ा। इसलिए मुझे लगता है कि मुझे क्या चाहिए नौकरी नियंत्रण पर बारी करने के लिए? क्या यह सुनिश्चित करेगा कि बच्चों के माता-पिता की पीआईडी ​​से मेल खाते हुए पीजीआईडी ​​है? या प्रत्येक बच्चे को अपने स्वयं के अनूठे पीजीआईडी ​​मिलेंगे?
टीसीजेड 8

मुझे जॉब कंट्रोलर्स पर ऑनलाइन कुछ डॉक्स मिले, बीमार उसी से गुजरे। आपकी मदद के लिए धन्यवाद बमार।
TCZ8

1
नौकरी पर नियंत्रण के साथ, प्रत्येक बच्चे को अपना पीजीआईडी ​​मिलता है। नौकरी पर नियंत्रण के बिना, वे माता-पिता के पीजीआईडी ​​को विरासत में लेते हैं। यदि प्रक्रिया समूह के नेता नहीं हैं, तो माता-पिता को इसका मूल भाग अपने PGID से मिला होगा ।
बमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.