2011-11-04 6 views
27

मैं अब निम्न आदेशनोहुप प्रक्रिया को कैसे मारें?

$ nohup ./tests.run.pl 0 & 

मार डाला जब मैं इसे मारने की कोशिश (और फांसी कि इस स्क्रिप्ट से शुरू कर रहे हैं) का उपयोग कर

$ kill -0 <process_id> 

यह काम नहीं करता। मैं नोहप्पीड स्क्रिप्ट के माध्यम से चलने वाली प्रक्रियाओं और प्रक्रियाओं को कैसे मार सकता हूं?

धन्यवाद

उत्तर

37

kill -0 करता नहीं प्रक्रिया मार डालते हैं। यह सिर्फ जांच करता है कि क्या आप इसे सिग्नल भेज सकते हैं।

बस kill pid, और यदि यह काम नहीं करता है, तो kill -9 pid आज़माएं।

+0

यह बहुत बहुत धन्यवाद। – polerto

+1

@Mat, क्या मुझे पहले प्रक्रिया आईडी प्राप्त करने की आवश्यकता है? क्या होगा अगर मैं कई प्रक्रियाओं को चलाता हूं और उन्हें एक बार में मारना चाहता हूं? मैंने एकाधिक कोर का उपयोग करके समांतर कंप्यूटिंग की है, इसलिए, "नोहुप" द्वारा लागू 10 प्रक्रियाएं कहती हैं। मैं उन सभी को मारना चाहता हूं। क्या आप कृपया मुझे यहां निर्देश दे सकते हैं? धन्यवाद। –

+0

मैंने हत्या -9 के साथ एक नोहप प्रक्रिया को मार दिया है, लेकिन फिर भी जब मैं कमांड पूंछ f nohup चलाता हूं। मुझे लगातार लॉग मिल रहा है ... इसका मतलब है कि मेरी प्रक्रिया चल रही है ... क्या करना है ?? –

25

बस kill <pid> जो SIGTERM भेज देगा, जो nohup अनदेखा नहीं करेगा।

आपको पहले SIGKILL नहीं भेजना चाहिए क्योंकि प्रक्रिया को पुनर्प्राप्त करने का कोई मौका नहीं है;

  • SIGTERM (15)
  • SIGINT (2)
  • SIGKILL (9)
+2

बिल्कुल सच है। एक सिग्कील (हत्या -9) को प्रक्रिया के सिग्नल हैंडलर द्वारा पकड़ा नहीं जा सकता है। इसका अर्थ यह है कि आप अस्थायी फ़ाइलों को हटाने और/या आवंटित किसी भी साझा मेमोरी सेगमेंट को अलग करने के लिए कोई एपिलॉग कोड नहीं लिख सकते हैं। साझा स्मृति को साफ करने में विफलता का मतलब है कि नई प्रक्रियाओं के लिए कम समग्र स्मृति उपलब्ध है - एक बुरा चीज़। – JRFerguson

2

आप इस प्रक्रिया आईडी पता नहीं है और यह: क्या आप क्रम में, निम्नलिखित का प्रयास करना चाहिए शैल (या लूप) के भीतर विभिन्न कमांड चला सकते हैं, आप नौकरियां और पीआईडी ​​सूचीबद्ध करने के लिए jobs -l चला सकते हैं, फिर kill उन्हें चला सकते हैं।

[email protected]:/usr/share/etlservice/bin$ jobs -l 
[1] 27398 Running     nohup ./extract_assessor_01.sh > job1.log & 
[2] 27474 Running     nohup ./extract_assessor_02.sh > job2.log & 
[3] 27478 Running     nohup ./extract_assessor_03.sh > job3.log & 
[4]- 27481 Running     nohup ./extract_assessor_04.sh > job4.log & 
[5]+ 28664 Running     nohup ./extract_assessor_01.sh > job1.log & 
[email protected]:/usr/share/etlservice/bin$ sudo kill 27398 
sudo kill 27474[1] Terminated    nohup ./extract_assessor_01.sh > job1.log 
[email protected]:/usr/share/etlservice/bin$ sudo kill 27474 
[2] Terminated    nohup ./extract_assessor_02.sh > job2.log 
[email protected]:/usr/share/etlservice/bin$ sudo kill 27478 
[3] Terminated    nohup ./extract_assessor_03.sh > job3.log 
[email protected]:/usr/share/etlservice/bin$ sudo kill 27481 
[4]- Terminated    nohup ./extract_assessor_04.sh > job4.log 
[email protected]:/usr/share/etlservice/bin$ sudo kill 28664 
[5]+ Terminated    nohup ./extract_assessor_01.sh > job1.log 
[email protected]:/usr/share/etlservice/bin$ 
3
कुछ

मैं क्या करना होगा जैसे:

jobs 

[1] + Running nohup ./tests.run.pl 

kill %1 
0

मारने nohup प्रक्रिया

ps aux |grep nohup 

ग्रेप कि PID kill -15 -1 16000 (आपको लॉगआउट जाएगा) और पर साफ

उदाहरण देखें अगली लॉगिन रूट