फ्रीज के बिना पृष्ठभूमि में नौकरी रखें


9

कहते हैं आप इस तरह से काम शुरू करें

foo

और फिर इच्छा है कि आप इसे पृष्ठभूमि में रखना चाहते हैं। टाइपिंग Ctrl+ Zऔर फिर bgट्रिक करता है लेकिन + और के fooबीच फ्रीज होगा । मैं इसे पहले फ्रीज किए बिना पृष्ठभूमि में फू कैसे रख सकता हूं?CtrlZbg


7
उपयोग मामला क्या है? यह एक समस्या क्यों है कि प्रक्रिया थोड़े समय के लिए जम जाती है?
l0b0

जवाबों:


4

तकनीकी रूप से fooपहले से ही पृष्ठभूमि में चलता है। आप दूसरा टर्मिनल सत्र शुरू कर सकते हैं, और दूसरा काम करते समय पहले वाला भाग जारी रहेगा foo

एक्स में, इसमें बस एक दूसरा टर्मिनल एप्लिकेशन शुरू करना या किसी अन्य टैब को खोलना शामिल है, यदि आपकी पसंद के टर्मिनल एमुलेटर में ऐसी विशेषताएं हैं।

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

यदि आप किसी टर्मिनल मल्टीप्लेक्सर का उपयोग करते हैं screenया tmuxआप इसके भीतर एक और सत्र शुरू कर सकते हैं। उदाहरण के लिए, स्क्रीन में, इस का उपयोग किया जाता Ctrl+ Aइसके तुरंत बाद आता Ctrl+ C। उनके बीच स्विच करने के लिए, टर्मिनल सत्रों के बीच आगे और पीछे जाने के लिए Ca Cn और Ca Cp का उपयोग करें।


यानी, यह मारपीट में संभव नहीं है।
user877329

1
यह उत्तर एक पृष्ठभूमि नौकरी की अवधारणा की गलतफहमी पर आधारित लगता है। एक टर्मिनल में "अग्रभूमि प्रक्रिया समूह" विशेषता होती है, जो आमतौर पर शेल द्वारा निर्धारित की जाती है, जो उस समूह में प्रक्रियाओं को बनाता है जो टर्मिनल से पढ़ने में सक्षम होता है और SIGINT जैसे छोटे से संबंधित संकेतों को प्राप्त करता है। टर्मिनल पर चलने वाली सभी प्रक्रियाएं जो अग्रभूमि प्रक्रिया समूह में नहीं हैं, पृष्ठभूमि प्रक्रियाएं हैं। जब आप एक नया टर्मिनल बनाते हैं, तो मूल टर्मिनल का अग्रभूमि कार्य अभी भी उस टर्मिनल पर अग्रभूमि का काम है, भले ही आप इसे नहीं देख रहे हों।

@ WumpusQ.Wumbley मेरे उत्तर की बात यह है कि अधिकांश (सभी?) सिस्टम जो बैश चला सकते हैं, वे अपने स्वभाव से बहु-काम कर रहे हैं। इस तरह की प्रणाली पर, भले ही एक प्रक्रिया है, कहते हैं, इनपुट फोकस, प्रक्रिया के बारे में स्वाभाविक रूप से "अग्रभूमि" कुछ भी नहीं है; foo अपने आप में (अनुपस्थित विशिष्ट जाँच, जिसका मैं अनुमान लगाता हूँ कि जंगल में कहीं दुर्लभ और कोई नहीं है) यह परवाह नहीं करता है कि यह सबसे ऊपर की खिड़की में चल रहा है या यहां तक ​​कि अगर कुछ अपना उत्पादन प्रदर्शित कर रहा है।
एक CVn

1
मेरा कहना यह है कि जब प्रश्न विशेष रूप से "पृष्ठभूमि" और "नौकरी" शब्दों का उल्लेख करता है - ये दोनों तकनीकी शर्तें हैं जो पोसिक्स प्रक्रिया समूह ढांचे द्वारा परिभाषित हैं - साथ ही साथ Ctrl-Z और bg के तंत्र, जिनमें से दोनों प्रक्रिया समूहों पर कार्य करें - और आपका उत्तर प्रक्रिया समूह की कार्यक्षमता का उपयोग नहीं करने का सुझाव देता है, और आप "पृष्ठभूमि" शब्द का उपयोग इस तरह से करते हैं, जो इसकी वास्तविक परिभाषा से मेल नहीं खाता है - आप प्रश्न के लिए अपना उत्तर नहीं दे रहे हैं। और "तकनीकी रूप से fooपहले से ही पृष्ठभूमि में चलता है " के साथ शुरू करने के लिए ... बस ... नहीं। तकनीकी रूप से।

@ WumpusQ.Wumbley किसी तरह मुझे नहीं लगता कि ओपी ने POSIX मानक पढ़ा और सोचा "हम्म, मैं इस का उपयोग करना चाहूंगा, लेकिन मैंने पहले ही शुरू कर दिया है fooइसलिए अब मैं क्या करूं?" यदि आपको लगता है कि यह उत्तर (या अन्य उत्तर) प्रश्न का उत्तर देने में उपयोगी नहीं है, तो मैं आपको अपने वोटिंग विशेषाधिकारों का उपयोग करने के लिए प्रोत्साहित करने के साथ-साथ अपने स्वयं के प्रश्न का उत्तर देने से छोड़ दूंगा जो आपको लगता है कि सही कोण है, बजाय प्रश्न पर उत्तर में से एक के बारे में बहस करना । शायद आप उदाहरण के लिए महसूस करते हैं l0b0 का उत्तर बेहतर है, लेकिन मेरा जवाब ओपी को कम से कम मोटे तौर पर ऐसा करने का एक तरीका प्रदान करता है।
एक CVn

3

&कमांड के बाद एक संकेत जोड़ना ( foo &) इसे तुरंत पृष्ठभूमि देगा। लेकिन मेरा मानना ​​है कि एक मानक टर्मिनल / शेल कॉन्फ़िगरेशन में कोई रास्ता नहीं है, तुरंत अग्रभूमि होने पर कुछ पृष्ठभूमि के लिए ।


3

अग्रभूमि से पृष्ठभूमि पर एक आवेदन भेजने के लिए टर्मिनल और शेल दोनों से सहयोग की आवश्यकता होती है। टर्मिनल इसे अकेले नहीं कर सकता, क्योंकि शेल को अग्रभूमि प्रक्रिया समूह सेट करना होगा। शेल इसे अकेले नहीं कर सकता है, क्योंकि टर्मिनल को कुंजी प्रेस को संसाधित करना होगा (शेल अग्रभूमि में नहीं है, इसलिए यह कुंजी प्रेस प्राप्त नहीं कर सकता है)।

मेरे पास एक zsh कॉन्फ़िगरेशन है जहां मैं त्वरित उत्तराधिकार में Ctrl+ Zदो बार दबा सकता हूं ; पहला प्रेस प्रक्रिया को निलंबित कर देता है, और दूसरा प्रेस इसे पृष्ठभूमि में फिर से शुरू करता है। मैं नहीं जानता कि इसे कैसे कोसना है।

यदि आप एक टर्मिनल एमुलेटर में चल रहे हैं जो आपको कीस्ट्रोक्स इंजेक्ट करने की अनुमति देता है, तो आप इंजेक्ट कर सकते हैं ^Zbg^M( ^नियंत्रण वर्णों के लिए अंकन का उपयोग करके )। उदाहरण के लिए, X11 टर्मिनल एमुलेटर के साथ, xdotool --window 1234 Ctrl_L+Z b g Returnजहां रन 1234 टर्मिनल एमुलेटर की विंडो आईडी है। स्क्रीन के साथ, रन screen -S foo -p 12 -X stuff $'\032bg\r'जहां fooस्क्रीन सत्र का नाम 12है और विंडो आईडी है।


2

यदि आपकी टाइपिंग मामले के लिए पर्याप्त त्वरित नहीं है, तो kill -s SIGSTOP 1023 && kill -s SIGCONT 1023एक अन्य शेल से चलाएं , लक्ष्य पीआईडी ​​के रूप में 1023 को दबाकर।

अस्वीकरण: जैसा कि रुस्लान शायद जानते थे, वास्तव में यह क्रम नौकरी को फिर से शुरू bashकरता है इसलिए जल्दी से इस पर ध्यान नहीं जाता है।


यह काम को पृष्ठभूमि में कैसे जगह देगा?
रुस्लान

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