मैं कमांड का उपयोग किए बिना नौकरी # 3 को मारने वाला हूं kill %3। मैं उसको कैसे करू? मुझे इसका जवाब कहीं भी नहीं मिल रहा है। मैं केवल एक कमांड का उपयोग कर सकता हूं । मैं यह कार्य कैसे करूं?
मैं कमांड का उपयोग किए बिना नौकरी # 3 को मारने वाला हूं kill %3। मैं उसको कैसे करू? मुझे इसका जवाब कहीं भी नहीं मिल रहा है। मैं केवल एक कमांड का उपयोग कर सकता हूं । मैं यह कार्य कैसे करूं?
जवाबों:
यह एक पाठ्यपुस्तक में एक समीक्षा प्रश्न है।
पाठ्यपुस्तक, और अन्य दस्तावेज़ों के बारे में बात करना काफी आसान है kill %3। और जहां वे करते हैं, यह काफी स्पष्ट है कि यह प्रश्न क्या हो रहा है। यह killकमांड के विकल्प पर नहीं मिल रहा है । यह शेल जॉब स्पेसर्स के बजाय प्रोसेस आईडी नंबरों का उपयोग करने पर नहीं मिल रहा है। यह इस पर हो रहा है:
पृष्ठभूमि में एक चल रहे कार्यक्रम को समाप्त करने के लिए, वह कार्य संख्याkill %nजहांnआप समाप्त करना चाहते हैं। उदाहरण के लिए, टाइपिंगkill %3नौकरी नंबर तीन को समाप्त करता है। कुछ कार्यक्रमोंkillको समाप्त करने के लिए कमांड से अधिक की आवश्यकता होती है।killइस वाक्य रचना के साथ कमांड की मारक शक्ति को मजबूत करें :kill -9 %n- ब्रेंट डी। हेसलोप, डेविड एंगेल (1990)। मास्टरींग सनोस । Sybex। पी। 189
यह इस तथ्य पर हो रहा है कि कभी-कभी SIGTERMकाम नहीं करता है । इसलिए, इस धारणा पर कि यह काम नहीं किया है (क्योंकि प्रक्रिया ने पकड़ा और सिग्नल को समाप्त किए बिना संभाला है), आपको कुछ अलग सिग्नल भेजने की कोशिश करने की आवश्यकता है। पुस्तकें इसका उत्तर भी देती हैं:
एक अच्छा सामान्य नियम कोशिश करने के लिए हैTERM,INTयाHUPसंकेत पहले एक प्रक्रिया को रोकने के। यदि वे विफल होते हैं, तोKILLसिग्नल का उपयोग करें ।- रॉबिन एंडरसन, एंडी जॉनसन (2002)। "दिन-प्रतिदिन की व्यवस्था प्रबंधन"। यूनिक्स फैलाया । Sams प्रकाशन। आईएसबीएन 9780672322518. पी। 404।
kill" । यूनिक्स कमांड का परिचय । इंडियाना यूनिवर्सिटी।kill -9 । पीटर एन। स्टाइनमेट्ज़।एक बहुत ही सरल आदेश, यदि आप एक पृष्ठभूमि नौकरी को मारना चाहते हैं, तो killयह होगा:
kill $(jobs -p 3)
-p केवल pids को सूचीबद्ध करता है, और नंबर 3 जॉबस्पेक है।
killऔर jobsदोनों कमांड हैं, इसलिए यह बताई गई आवश्यकता को पूरा नहीं करता है - "मैं केवल एक कमांड का उपयोग कर सकता हूं"।
आप हमेशा fg 3(# 3 भूमिगत नौकरी) कर सकते हैं और फिर इसे नियंत्रण-सी के साथ रद्द कर सकते हैं या कमांड से बाहर निकलने की सामान्य विधि जो भी हो।
समीक्षा प्रश्न आपको सोचने के लिए हैं; यदि वे उत्तर निकाय में स्पष्ट रूप से लिखे गए हैं तो वे बहुत अच्छे नहीं हैं। आप नौकरी के बारे में और क्या जानते हैं? क्या आप इसका नाम जानते हैं? क्या आप जानते हैं कि यह हाल ही में शुरू की गई नौकरी थी? यदि आप सभी जानते हैं कि यह नौकरी नंबर 3 है, तो स्पष्ट रूप से आपको इसे किसी तरह से संदर्भित करना होगा।
उनकी संख्या के अलावा अन्य नौकरियों को संदर्भित करने के कई तरीके हैं; से man bash:
शेल में किसी नौकरी को संदर्भित करने के कई तरीके हैं। चरित्र
%एक नौकरी के नाम का परिचय देता है। जॉब नंबर केnरूप में संदर्भित किया जा सकता है%n। इसे शुरू करने के लिए उपयोग किए गए नाम के उपसर्ग का उपयोग करके या इसके कमांड लाइन में दिखाई देने वाले सबस्ट्रिंग का उपयोग करके एक नौकरी भी संदर्भित की जा सकती है। उदाहरण के लिए,%ceएक रुकी हुईceनौकरी को संदर्भित करता है । यदि उपसर्ग एक से अधिक काम से मेल खाता है, तो बैश एक त्रुटि की रिपोर्ट करता है।%?ceदूसरी ओर, उपयोग करना ,ceकमांड लाइन में स्ट्रिंग वाली किसी भी नौकरी को संदर्भित करता है । यदि विकल्प एक से अधिक कार्य से मेल खाता है, तो बैश एक त्रुटि की रिपोर्ट करता है। प्रतीकों%%और%+वर्तमान नौकरी के खोल की धारणा को संदर्भित करते हैं, जो कि पिछली नौकरी है, जबकि यह अग्रभूमि में था या पृष्ठभूमि में शुरू हुआ था। पिछली नौकरी का उपयोग करके संदर्भित किया जा सकता है%-। नौकरियों से संबंधित आउटपुट में (उदाहरण के लिए, जॉब कमांड का आउटपुट), वर्तमान जॉब को हमेशा ए+और पिछले जॉब को ए के साथ फ्लैग किया जाता है-। एक एकल%(बिना नौकरी के विनिर्देश के साथ) वर्तमान नौकरी को भी संदर्भित करता है।
यहां नौकरी के नाम विकल्पों की एक तालिका है , अगर यह पढ़ना आसान है।
आप pkill(या) killallफ़ंक्शन का उपयोग कर सकते हैं
sleep & sleep & sleepतो killall sleepतीनों को मार देंगे, न केवल तीसरे (और वास्तव में, नौकरियों में से एक को बाहर करने का कोई तरीका नहीं है)।
top, हिट कर सकते हैंkऔर फिर टाइप कर सकते हैंPID।