आपके पास कुछ विकल्प हैं। एक स्क्रिप्ट को रोकना है ( CtrlZ), स्क्रिप्ट की पीआईडी प्राप्त करें और SIGKILL
प्रक्रिया समूह को भेजें ।
जब एक कमांड को एक शेल में निष्पादित किया जाता है, तो यह प्रक्रिया शुरू होती है और उसके सभी बच्चे उसी प्रक्रिया समूह (इस मामले में, अग्रभूमि प्रक्रिया समूह) का हिस्सा होते हैं। इस समूह में सभी प्रक्रियाओं के लिए एक संकेत भेजने के लिए, आप इसे प्रक्रिया नेता को भेजते हैं। के लिए kill
आदेश, प्रक्रिया नेता इस प्रकार प्रदर्शित किया जाता है:
kill -PID
PID
स्क्रिप्ट की प्रोसेस आईडी कहां है।
उदाहरण:
एक स्क्रिप्ट पर विचार करें test.sh
जो कुछ प्रक्रियाओं को लॉन्च करती है। कहो कि आप इसे एक खोल में भाग गया:
$ ./test.sh
दूसरे टर्मिनल में,
$ pgrep test.sh
17802
$ pstree -ps `!!`
pstree -ps `pgrep test.sh`
init(1)───sshd(1211)───sshd(17312)───sshd(17372)───zsh(17788)───test.sh(17802)─┬─dd(17804)
├─sleep(17805)
└─yes(17803)
इस स्थिति में test.sh
, आपके द्वारा बनाए गए प्रक्रिया समूह को संकेत भेजने के लिए , आप यह करेंगे:
kill -INT -17802
-INT
भेजने के लिए उपयोग किया जाता है SIGINT
, और इसलिए यह आदेश CtrlCटर्मिनल पर दबाने के बराबर है । भेजने के लिए SIGKILL
:
kill -KILL -17802
यदि आपको कोई अन्य टर्मिनल नहीं खोल सकता है, तो आपको केवल स्क्रिप्ट को रोकने की आवश्यकता है। यदि आप कर सकते हैं, pgrep
पीआईडी खोजने के लिए उपयोग करें।
स्क्रिप्ट लॉन्च करने वाला एक आदेश फंस सकता है SIGINT
, जो शायद CtrlCअप्रभावी है। हालाँकि, SIGKILL
इसे फँसाया नहीं जा सकता है, और यह आमतौर पर एक अंतिम उपाय है। आप मारने के लिए जाने से पहले SIGTERM
( -TERM
) कोशिश कर सकते हैं । न तो SIGKILL
या SIGTERM
स्थापित किया जा सकता के रूप में एक , कीबोर्ड शॉर्टकट रास्ता SIGINT
है।
यदि आपकी लिपि में कोई शबंग रेखा नहीं है, तो यह सब लूट है। से इस अतः जवाब :
आमतौर पर अभिभावक शेल का अनुमान है कि स्क्रिप्ट उसी शेल के लिए लिखी गई है (न्यूनतम बॉर्न-जैसे गोले स्क्रिप्ट को / बिन / श के साथ चलाते हैं, बैश इसे बैश सबप्रोसेस के रूप में चलाता है) ...
इसके कारण, जब स्क्रिप्ट निष्पादित होती है, तो आपको स्क्रिप्ट के नाम पर एक प्रक्रिया नहीं मिलेगी (या कमांड लाइन में स्क्रिप्ट के नाम के साथ एक प्रक्रिया) और pgrep
विफल हो जाएगी।
हमेशा एक शेबंग लाइन का उपयोग करें।
Ctrl + z