एक यूनिक्स / लिनक्स एप्लिकेशन पर CTRL + Z का क्या प्रभाव है


85

मैं उत्सुक और उलझन में था कि वास्तव में CTRl + Z का व्यवहार क्या है।

मुझे पता है, अगर अग्रभूमि में चलने वाली एक प्रक्रिया, और हम ctrl + z दबाते हैं, तो यह पृष्ठभूमि में चला जाता है।

लेकिन वास्तव में क्या होता है।

क्या यह काम करता रहता है, या क्या यह निलंबित हो जाता है, और उस बिंदु पर रुक गया जहां यह था।

और अगर यह उस बिंदु पर बंद हो जाता है, और पृष्ठभूमि नौकरी का अर्थ क्या है।


7
Ctrl-Z पृष्ठभूमि के लिए एक प्रक्रिया नहीं भेजता है, यह इसे निलंबित करता है।
वूबल सेप

जवाबों:


70

एक "बैकग्राउंड जॉब" सिर्फ एक है जो उपयोगकर्ता के साथ बातचीत नहीं कर रहा है - यह टैटी को नियंत्रित नहीं करता है और यह सिर्फ अपनी चीज (आमतौर पर चुपचाप) करता है। एक अग्रभूमि नौकरी रिवर्स है, यह उपयोगकर्ता के साथ बातचीत करने के लिए ट्टी का नियंत्रण रखती है।

नियंत्रण-जेड सबसे हालिया अग्रभूमि प्रक्रिया (ट्टी के साथ बातचीत करने की अंतिम प्रक्रिया) को निलंबित कर देता है (जब तक कि प्रक्रिया निलंबन को अनदेखा करने के लिए कदम नहीं उठाती है, जैसे कि गोले सामान्य रूप से करते हैं)। यह आम तौर पर आपको अपने शेल में वापस लाएगा, जहां से आप आम तौर पर bgबैकग्राउंड को निलंबित प्रक्रिया को स्थानांतरित करने के लिए कमांड दर्ज कर सकते हैं (इसे चलाना जारी रखें) या fgइसे अग्रभूमि में वापस लाने के लिए।


1
पूर्व की पृष्ठभूमि वाली प्रक्रिया को पूर्ववत करने के लिए, यह fgjobsfb %1
बताएं

fg %1नहींfb %1
ahonnecke

55

Ctrl + Z दबाने TSTPसे आपकी प्रक्रिया का संकेत भेजा जाता है। यह क्रियान्वयन को रोक देता है (कर्नेल प्रक्रिया को और अधिक सीपीयू समय निर्धारित नहीं करेगा) और प्रक्रिया जारी रखने के लिए प्रक्रिया की प्रतीक्षा कर रही है।

आप इसके माध्यम से अनुकरण कर सकते हैं / दोहरा सकते हैं ( kill -TSTPऔर नाम के बावजूद, आपकी प्रक्रिया में नामांकित संकेत भेजेंगे!)kill -CONTkill

शेल में प्रक्रिया को 'पृष्ठभूमि' करने के लिए कार्यक्षमता है, लेकिन यह शेल और प्रक्रिया के बीच का संबंध है। इस प्रक्रिया में वास्तव में 'पृष्ठभूमि' या 'अग्रभूमि' की अवधारणा नहीं है।

अधिक जानकारी के लिए यहाँ देखें ।


2
^ZSIGTSTP भेजता है, SIGSTOP नहीं
विलियम

@WilliamPursell - आह! का उल्लेख किया। अब बदल गया है। Thx
ब्रायन एग्न्यू

15

इस कमांड पर विचार करें, जो लगभग लेता है। मेरे लैपटॉप पर 4.5 सेकंड:

echo 2^10000000 | bc -lq | wc -c

जब आप Ctrl+ दबाते हैं Z, तो गणना निलंबित हो जाएगी। आपके पास अग्रभूमि में गणना फिर से शुरू करने fg, या पृष्ठभूमि का उपयोग करके इसे फिर से शुरू करने का एक विकल्प है bg। बाद वाला कमोबेश निष्पादन के बराबर है:

echo 2^10000000 | bc -lq | wc -c &

9

Ctrl + z दबाने पर एक प्रक्रिया निलंबित और बंद हो जाती है। एफजी के साथ आप निलंबित नौकरी को अग्रभूमि में स्थानांतरित कर सकते हैं, बीजी के साथ आप इसे पृष्ठभूमि में चला सकते हैं।

अधिक जानकारी के लिए http://linuxreviews.org/beginner/jobs/ देखें ।

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