उस प्रक्रिया को मारें जो पुनः आरंभ होती रहती है


16

अगर 'किल -9' काम न करे तो क्या होगा? या नई प्रक्रिया शुरू करने वाली स्क्रिप्ट को कैसे मारें? वैसे भी मेरी मदद नहीं करता है।

मेरे पास एक पायथन लिपि है जो उसी प्रक्रिया का उपयोग करके स्वचालित रूप से शुरू होती है जब उसी पोर्ट का उपयोग करके मार दिया जाता है sudo kill -9 <pid>

$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  13242 ubuntu    3u  IPv4  64592      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill -9 13242
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16106 ubuntu    3u  IPv4  74792      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill 16106
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16294 ubuntu    3u  IPv4  75677      0t0  TCP localhost:3002 (LISTEN)

यह एक ज़ोंबी प्रक्रिया नहीं है।

$ ps -Al

4 S     0 16289     1  0  80   0 - 12901 poll_s ?        00:00:00 sudo
4 S  1000 16293 16289  0  80   0 -  1100 wait   ?        00:00:00 sh
0 S  1000 16294 16293  0  80   0 - 34632 poll_s ?        00:00:00 python

मैंने भी sudo pkill -f <processname>बिना किस्मत के साथ कोशिश की है । यह मरना नहीं चाहता।

अपडेट करें:

यह मूल प्रक्रिया है shजिसका माता-पिता sudoउपरोक्त तालिका में उल्लेखित है। मुझे यकीन नहीं है कि अगर यह अचानक मारना सुरक्षित है। इसके अलावा यह एक साझा ubuntu सर्वर है।


ऐसा लगता है कि यह ठीक मर रहा है। आपका lsofआउटपुट हर बार एक नया पीआईडी ​​दिखाता है। प्रक्रिया बस पुनरारंभ है।
पैट्रिक

हाँ, यह हमेशा के लिए मरना नहीं चाहता है। उठता है जैसे यह कभी नहीं मर गया :(
लक्ष्मीनारायण गुप्त

जवाबों:


26

किसी अन्य प्रक्रिया आईडी के साथ स्वचालित रूप से शुरू होता है इसका मतलब है कि यह एक अलग प्रक्रिया है। इस प्रकार एक अभिभावक प्रक्रिया है, जो अपने बच्चों की निगरानी करता है, और यदि कोई मर जाता है, तो वह माता-पिता द्वारा सम्मानित हो जाता है। यदि आप सेवा को पूरी तरह से रोकना चाहते हैं, तो पता करें कि मूल प्रक्रिया को कैसे रोकें। इसे मारना SIGKILLनिश्चित रूप से विकल्पों में से एक है, लेकिन शायद द राइट वन टीएम नहीं है , क्योंकि सर्विस मॉनिटर को ठीक से बंद करने के लिए कुछ सफाई करने की आवश्यकता हो सकती है।

मॉनिटर प्रक्रिया को खोजने के लिए, आपको पूरी प्रक्रिया सूची का निरीक्षण करने की आवश्यकता हो सकती है, क्योंकि वास्तविक श्रोता अपने माता-पिता (आमतौर पर fork() + setsid()कॉम्बो द्वारा ) से खुद को अलग कर सकते हैं । इस मामले में, मुझे लगता है कि आउटपुट ps faux( procpsकम से कम, अन्य कार्यान्वयन के लिए भिन्न हो सकता है) बल्कि आसान है - यह एक पदानुक्रमित पेड़ में सभी प्रक्रियाओं को सूचीबद्ध करता है। जब तक पीआईडी ​​रैप नहीं हुआ है ( विकिपीडिया भी देखें ), मॉनिटर पीआईडी ​​किसी भी श्रोता के पीआईडी ​​से छोटा होना चाहिए (जब तक कि आप पीआईडी-रैपराउंड को हिट नहीं करते)।


इसका जनक shजिसका जनक होता है sudo। क्या उन्हें मारना ठीक है?
लक्ष्मीनारायण गुप्त

किस प्रक्रिया का जनक? पोर्ट 3002 पर सुनने वाला? उस मामले में सभी प्रक्रियाओं को सूचीबद्ध करें और अनुमान लगाएं कि कौन सा मॉनिटर है। लिनक्स के साथ procps, मैं आमतौर पर आउटपुट को ps -fauxपर्याप्त जानकारीपूर्ण पाता हूं । यह भी ध्यान दें, मॉनिटर की पीआईडी ​​वास्तविक श्रोता की पीआईडी ​​से छोटी होनी चाहिए (जब तक कि आपके पास कुछ समय के लिए सिस्टम न हो और सेवा शुरू होने के बाद से पीआईडी ​​पहले से ही लिपटे हों)।
पीटर सिप 29'14

महान। ps -fauxमाता-पिता से हत्या शुरू करने में मदद की। क्या आप टिप्पणी से समाधान के साथ अपना जवाब अपडेट कर सकते हैं?
लक्ष्मीनारायण गुप्त

हां, मैं इसके बारे में सोच रहा था ... :)
पीटर सिप 29'14

ps fauxयह पता लगाने में मदद की कि supervisord
आखिर किसने लारावेल

4

यदि आप प्रक्रिया के श्रवण बंदरगाह को जानते हैं, तो आप ध्वज के fuserसाथ उपयोग कर सकते हैं -k

कुछ इस तरह,

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