एक पायथन स्क्रिप्ट को मैन्युअल रूप से कैसे रोकें जो लगातार लिनक्स पर चलती है


19

मेरे पास एक पायथन स्क्रिप्ट है जो एक लॉग फ़ाइल में चल रही और लगातार डंपिंग त्रुटियों है।

मैं स्क्रिप्ट को संपादित करना चाहता हूं और इसे फिर से चलाता हूं, लेकिन स्क्रिप्ट को रोकना नहीं जानता।

मैं वर्तमान में PuTTy के माध्यम से लिनक्स पर लॉग इन हूं और वहां सभी कोडिंग कर रहा हूं। तो, क्या लिंकन में अजगर लिपि को रोकने की आज्ञा है?

जवाबों:


35

आपको प्रक्रिया आईडी (पीआईडी) ढूंढनी होगी। ऐसा करने के लिए एक आदेश होगा

$> ps -ef

अजगर प्रक्रियाओं को सीमित करने के लिए आप परिणाम प्राप्त कर सकते हैं

$> ps -ef | grep python

जो परिणाम देगा जैसे:

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

दूसरा कॉलम पिड है। फिर मार कमांड का उपयोग इस तरह करें:

$> kill -9 2430 (i.e. the pid returned)

ठीक यही मैं देख रहा था। धन्यवाद

8

इस सरल रेखा का प्रयास करें, यह सभी को समाप्त करेगा script.py:

pkill -9 -f script.py

1
यदि स्क्रिप्ट नाम अद्वितीय है, तो यह मैन्युअल रूप से PID की खोज करने से बेहतर है।
फ़्लिपिंगबिनरी

7

स्क्रिप्ट की प्रोसेस आईडी (पीआईडी) ढूंढें और kill -9 PIDजब तक कि वह उस स्थिति में टर्मिनल पर आपकी फोरेस्ट प्रक्रिया के रूप में चल रही हो, तब तक इसे मारने के लिए प्रक्रिया जारी कर सकते हैं।

इस कमांड के साथ PID ढूंढें:

ps -elf | grep python

यह सभी अजगर प्रक्रियाओं को सूचीबद्ध करता है, सही को बाहर निकालता है और इसके पीआईडी ​​को नोट करता है। फिर

kill -9 <whatever_the_PID_is>

प्रक्रिया को मार देगा। आपको इस स्तर पर एक प्रक्रिया को समाप्त करने के बारे में एक संदेश मिल सकता है।

वैकल्पिक रूप से, आप topअजगर प्रक्रिया को खोजने के लिए कमांड का उपयोग कर सकते हैं । बस k(मारने के लिए) दर्ज करें और topकार्यक्रम आपको मारने की प्रक्रिया के पीआईडी ​​के लिए संकेत देगा। कभी-कभी उन सभी प्रक्रियाओं को देखना मुश्किल होता है जिनमें आप रुचि रखते हैं topक्योंकि वे स्क्रीन को बंद कर सकते हैं, मुझे लगता है कि psदृष्टिकोण आसान / बेहतर है।


4
खैर, उपयोग करने से पहले -9, मैं इसे पहले "नरम" मारूंगा। केवल अगर यह प्रतिक्रिया नहीं करता है, तो मैं उपयोग करूंगा -9
13

"सॉफ्ट किलिंग" शब्द से परिचित नहीं हैं ..
लेवोन

4

यदि प्रोग्राम आपके शेल में वर्तमान प्रक्रिया है, तो Ctrl-C टाइप करने से पायथन प्रोग्राम बंद हो जाएगा।


महान समाधान, परीक्षण के लिए यह आवश्यक है।
कुजोन

1

एक आदर्श दुनिया में, आप स्क्रिप्ट के लिए दस्तावेज़ीकरण पढ़ेंगे और देखेंगे कि इसे समाप्त करने के लिए कौन से संकेत (संकेतों) का उपयोग किया जाना चाहिए। वास्तविक जीवन में, आप शायद इसे TERM सिग्नल भेजना चाहते हैं, पहले, यदि KERM संकेत का उपयोग कर रहा है तो वह TERM को अनदेखा करता है। तो, आप जो भी करते हैं, वह पीएस कमांड (जैसा कोई पहले से वर्णित है) का उपयोग करते हुए प्रोसेस आईडी ढूंढता है। फिर, आप चला सकते हैं kill -TERM <pid>। कुछ प्रोग्राम चीजों को साफ करेंगे, जैसे कि वे फाइलें, जो उनके पास खुली हो सकती हैं, जब उन्हें उस तरह का संकेत मिलता है, तो ऐसा कुछ के साथ शुरू करने के लिए अच्छा है। यदि वह विफल रहता है, तो बड़े हथौड़ा को छोड़कर बहुत कुछ करना बाकी नहीं है kill -KILL <pid>:। (आप संख्यात्मक मानों का उपयोग कर सकते हैं, जैसे -KILL = -9, और वे शायद कभी नहीं बदलेंगे, लेकिन सैद्धांतिक रूप से यह नामों का उपयोग करने के लिए सुरक्षित हो सकता है)


0

यदि आप स्क्रिप्ट का नाम जानते हैं, तो आप एक ही कमांड में सभी काम कम कर सकते हैं:

ps -ef | grep "script_name" | awk '{print $2}' | xargs sudo kill

यदि आप यह सुनिश्चित करना चाहते हैं कि एक अजगर स्क्रिप्ट है:

ps -ef | grep "python script_name" | awk '{print $2}' | xargs sudo kill

यदि आप सभी अजगर लिपियों को मारना चाहते थे:

ps -ef | grep "python" | awk '{print $2}' | xargs sudo kill

मुझे लगता है कि आप विचार प्राप्त करते हैं;)

अनुस्मारक: आपको स्क्रिप्ट नाम "" उद्धृत करने की आवश्यकता है जैसा कि उदाहरणों में है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.