जब Ctrl-C रनिंग जॉब नहीं मारेगा तो क्या करें?


98

कभी कभी, प्रक्रियाओं द्वारा भेजे गए SIGINT संकेत की अनदेखी Ctrl- Cबैश में। उदाहरण के लिए, manऔर vi। यह मानते हुए कि आप रनिंग प्रक्रिया से बाहर निकलने का तरीका गूगल पर पढ़ना या पढ़ना नहीं चाहते हैं, क्या कोई महत्वपूर्ण अनुक्रम है जो हमेशा काम करेगा (बिना टर्मिनल को छोड़े)?

जवाबों:


141

SIGQUIT सिग्नल Ctrl+ के साथ भेजें \

.. $ sleep 10
^\Quit

→ यह इसके बराबर है kill -3 pid। उपयोगकर्ता-अंतरिक्ष में चलने वाले कार्यक्रम सिग्विट को अनदेखा नहीं करते हैं।

मैजिक SysRq कीबोर्ड शॉर्टकट का एक सेट भी है । अधिक दिलचस्प लोगों में से एक यह है: Alt+ SysRq+ k। यह वर्तमान वर्चुअल कंसोल पर हर प्रक्रिया को मारता है। यदि आपका एक टिट पूरी तरह से और पूरी तरह से टूट गया है, तो इसका उपयोग वापस जाने के लिए किया जा सकता है । X.org पर चलने वाले tty पर, इसका उपयोग X को बिना दया के मारने के लिए किया जा सकता है।

SysRq कुंजी, अधिकांश कीबोर्ड पर, प्रिंट कुंजी के समान है। मेरी नोटबुक पर, Fn कुंजी का उपयोग करके इसे लागू किया जा सकता है; उस क्रम में Ie Alt → Fn → Print → k।

यहाँ कुछ बुनियादी प्रक्रिया प्रबंधन शॉर्टकट हैं:

  • Ctrl+ Z: एक प्रक्रिया को रोकें ( bgपृष्ठभूमि में फिर से शुरू fgकरने के लिए, अग्रभूमि में ऊपर उठाने के लिए)
  • Ctrl+ C: विनम्रता से प्रक्रिया को अब बंद करने के लिए कहें
  • Ctrl+ \: निर्दयता से उस प्रक्रिया को मारना जो वर्तमान में अग्रभूमि में है
  • Alt+ SysRq+ s: डिस्क पर डेटा लिखें (किसी भी महत्वपूर्ण चीज को मारने से पहले हमेशा ऐसा करें)
  • Alt+ SysRq+ s, k: निर्दयता से किसी दिए गए आभासी कंसोल पर सभी मौजूदा प्रक्रियाओं को बंद
  • Alt+ SysRq+ s, b: निर्दयता से unmounting बिना रिबूट,
  • Alt+ SysRq+ r, e, i, s, u, b: सुरक्षित रूप से r eboot ven मैंरों ystem है यू tterly roken,

ध्यान दें: Ctrl+ Z, के विपरीत Ctrl+ Cऔर Ctrl+ \, भी के लिए काम करता है man, vi, less, और पसंद है।

जब संदेह में, फॉलिंग प्रक्रिया लगभग हमेशा काम करेगी:

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^ Z का संकेत है कि Ctrl+ Zको दबाया गया है।


गोले और टर्मिनलों पर अधिक गहराई से देखने के लिए, मेरे जवाब भी देखें:


3
"नींद 10" के लिए काम करता है, लेकिन फिर भी "आदमी" या "vi" के लिए काम नहीं करता है। स्पष्ट रूप से "किल -9 पिड" दोनों प्रक्रियाओं को मारने का काम करता है। क्या मैं कुछ भूल रहा हूँ?
ओलिवियर लालोंडे

3
Ctrl + Z कम, आदमी, vi और जैसी चीजों के साथ काम करता है। आप प्रोग्राम की अन्य आवृत्तियों के बारे में परवाह नहीं करते हैं, तो आप psउनकी प्रक्रिया आईडी को देखने और उन्हें का उपयोग करके मार सकते हैं kill pidया, उन्हें मार सकते हैं killall vi। किसी भी स्थिति में, Ctrl-Z हमेशा काम करने लगता है।
Stefano Palazzo

5
आप kill %%पिछली नौकरी को मारने के लिए भी कर सकते हैं और kill %55 में नौकरी का नंबर दिखाया गया है jobs
ओलिवियर लालोंडे

2
Ctrl- \ SIGQUIT भेजता है , SIGKILL नहीं। SIGQUIT और SIGKILL के बीच कुछ महत्वपूर्ण अंतर हैं। en.wikipedia.org/wiki/SIGQUIT
जूलियानो

4
जब मेरे कीबोर्ड लेआउट में कोई कुंजी नहीं होती है तो मैं Ctrl+ कैसे दबाता हूं? \ \
फोरविन


8

कभी-कभी CTRL+Cगलत प्रोग्राम या इनपुट चैनल पर भेजा जा रहा है। यह संपादकों के साथ विशेष रूप से आम है vi, जैसे कि पाइप्ड आउटपुट के साथ कमांड, जटिल बैश कमांड जिसमें लूप शामिल हैं, आदि।

एक सरल, त्वरित समाधान नौकरी निलंबित करना है CTRL+Zऔर फिर इसे नौकरी नंबर से मारना है: kill %1या kill -9 %1, आदि।


6
  • इनमें से एक आज़माएँ:

    Ctrl+4

    Ctrl+\


  • या:

    Ctrl+ Zऔर फिर चलाएं:

    kill %1

कहाँ %1काम की संख्या जो जब आप दबाया वापस आ गया था है Control- Z-9मारने के लिए मजबूर करने के लिए जोड़ें ।


जब आप टेक्स्ट कंसोल में होते हैं, तो आप भी कोशिश कर सकते हैं: Ctrl- SysRq। कर्नेल को प्रक्रिया को मारना चाहिए।

या SysRq- kवर्तमान वर्चुअल कंसोल पर सभी प्रक्रियाओं को मार सकते हैं (एक्स और svgalib कार्यक्रमों को भी मार सकते हैं)।

नोट: जब जादू SysRq कुंजियों का उपयोग एक जमे हुए चित्रमय कार्यक्रम को मारने के लिए किया जाता है, तो कार्यक्रम में पाठ मोड को पुनर्स्थापित करने का कोई मौका नहीं होता है। यह सब कुछ अपठनीय बना सकता है।

देखें: जादू SysRq कुंजी और इसके कमांड संयोजन।


3

आदमी से छोड़ने के लिए , वी का उपयोग q छोड़ दें:q


0

यह संभव है, कि आपने कॉपी का शॉर्टकट बदल दिया है:

CTRL+ SHIFT+C

सेवा

CTRL+C

इस तरह, जब आप एक प्रक्रिया को मारने की कोशिश करते हैं, तो CTRL+ Cकाम नहीं करता है।

प्रतिलिपि शॉर्टकट को CTRL+ SHIFT+ में बदलने का प्रयास करें C


1
प्रतिलिपि शॉर्टकट को बदलना एक प्रक्रिया को समाप्त करने के लिए मजबूर करने के लिए अप्रासंगिक है!
SuB

क्या आप कृपया अपने उत्तर पर थोड़ा विस्तार कर सकते हैं? कदम दर कदम आदर्श होगा, मुख्य रूप से इसलिए ओपी आपके सुझाव के साथ पालन कर सकता है। :)
ThatGuy

इससे वास्तव में मुझे मदद मिली। मैं MacOS पर CTRL + C का उपयोग कर रहा हूं, और यह महसूस नहीं किया कि Ubuntu कमांड CTRL + SHIFT + C
ratskin

-1

कोशिश Ctrl+ Alt+Backspace

यदि आप ubuntu 10.04 का उपयोग कर रहे हैं तो आप इस कुंजी को काम करने के लिए सक्षम करना चाहते हैं।

सक्षम करने के लिए Control- Alt-Backspace

गोटो सिस्टम -> वरीयताएँ -> कीबोर्ड

लेआउट टैब का चयन करें और लेआउट विकल्प पर क्लिक करें ।

X सर्वर को मारने और Control+ Alt+ कोBackspace सक्षम करने के लिए कुंजी अनुक्रम का चयन करें ।

ध्यान दें:

दबाने Ctrl- Alt- Backspaceअपने एक्स सर्वर को पुनः आरंभ करेगा।


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