एक मानक विधि है, अगर कार्यक्रम सहयोग करते हैं। kill -- -42
जहां मूल प्रक्रिया का पृष्ठ 42 है वहां चलाएं । यह प्रक्रिया 42 के द्वारा प्रोसेस ग्रुप लीड में सभी प्रक्रियाओं के लिए एक संकेत भेजता है (शून्य से पहले साइन साइन इन प्रोसेस ग्रुप समूह)।
आम तौर पर, यदि आप अपने पायथन स्क्रिप्ट को शेल प्रॉम्प्ट से चलाते हैं और यह बस कांटे लगाता है gnuchess
, तो दो प्रक्रियाओं को एक ही प्रक्रिया समूह में रहना चाहिए। लेकिन ऐसा प्रतीत नहीं होता है, क्योंकि Ctrl+ पूरे अग्रभूमि प्रक्रिया समूह को Cभेजता SIGINT
है।
Gnuchess अपने स्वयं के प्रक्रिया समूह में हो सकता है क्योंकि यह खुद को एक सत्र का नेता बनाता था (लेकिन मुझे नहीं पता कि यह ऐसा क्यों करेगा), या क्योंकि आपने इसे डबल-फोर्क किया है (अजगर ने एक शेल की खोज की है जो कि gnuchess को खोजता है)। एक डबल कांटा संभवतः परिहार्य है, लेकिन मैं आपको यह नहीं बता सकता कि आपके कोड को देखे बिना कैसे।
इस gnuchess
प्रक्रिया को देखने का एक विश्वसनीय और POSIX- अनुरूप तरीका है
gnuchess_pids=$(ps -A -o pid= -o cmd= | awk '$2 ~ /(^|\/)gnuchess$/ {print $1}')
विशिष्ट यूनिक्स वेरिएंट के पास इसे प्राप्त करने के बेहतर तरीके हो सकते हैं, जैसे कि pgrep
।
pkill
, आपके तो नाम से एक प्रक्रिया को मारने के लिएps aux | grep gnuchess
औरkill -9 PID
बस बन सकता हैpkill -9 gnuchess