GNU स्क्रीन कॉपी मोड ब्लॉक निष्पादन?


11

मैं GNU स्क्रीन के स्क्रॉलबैक / कॉपी मोड का उपयोग करता हूं। इसलिए मैंने कॉपी मोड में प्रवेश करने के लिए कंट्रोल-ए [को मारा, उस अनुभाग तक स्क्रॉल करें जिसकी मुझे परवाह है ... और फिर मैं भूल जाता हूं।

हालाँकि, ऐसा लगता है कि स्क्रॉलबैक / कॉपी मोड ब्लॉक में GNU स्क्रीन को छोड़ना (जो भी उस समय एप था)। उदाहरण के लिए, यदि मैं एक स्थानीय वेबसर्वर को आग लगाता हूं यदि मैं स्क्रोलबैक / कॉपी मोड में हूं, तो उस वेब सर्वर से किए गए अनुरोधों का समय समाप्त हो जाएगा: जब तक मैं कॉपी / स्क्रॉलबैक मोड से बाहर नहीं निकल जाता, तब तक प्रक्रिया प्रतिक्रिया नहीं देती।

मैंने यह दोनों रूबी ऑन रेल्स स्क्रिप्ट / सर्वर में और पायथन टूल पेस्ट के साथ देखा है।

मैंने अपनी खिड़कियों के लिए लॉगिंग मोड चालू करने पर विचार किया है, फिर उन लॉगफ़ाइल्स के माध्यम से विकल्प के रूप में बस सिलाई / grepping कर रहा हूं, लेकिन अगर इसे किसी अन्य माध्यम से नियंत्रित किया जा सकता है (सेटिंग, कॉपी मोड को अलग तरीके से सक्रिय करना) मुझे बहुत दिलचस्पी है।

मेरा स्क्रीन -version कहता है:

स्क्रीन संस्करण 4.00.03 (एफएयू) 23-अक्टूबर -06

(मैंने quora.com पर यह पूछा, लेकिन शायद यह एक बेहतर जगह है)

जवाबों:


8

कारण यह है कि आपकी प्रक्रियाएँ अवरुद्ध हो रही हैं क्योंकि स्क्रीन प्रक्रिया के आउटपुट पाइप को अवरुद्ध कर देगी जबकि आप कॉपी पेस्ट मोड में हैं। मैं इसे वास्तव में एक बग के रूप में नहीं देखता हूं, क्योंकि वास्तविक रूप से आप स्क्रीन को कॉपी / पेस्ट करते समय इसके बफर में संभावित असीमित मात्रा में जानकारी संग्रहीत करने के लिए कह रहे हैं। यदि आप किसी प्रोग्राम का आउटपुट पास करना चाहते हैं, लेकिन एक बार में ही इसे रोक सकते हैं, तो यह प्रयास करें।

program > logfile 2>&1 & 
less logfile

2> और 1 आपके प्रोग्राम से stderr और stdout को संयोजित करेगा। & कार्यक्रम को पृष्ठभूमि में भेजता है। यदि आवश्यक हो तो अग्रभूमि में लाने के लिए fg का उपयोग करें। अब एफ को दबाएं लॉगफाइल के अंत का पालन करने के लिए क्योंकि यह कम के साथ बढ़ता है। Ctrl + c दबाएं यदि आपको किसी चीज को रोकने और जांचने की आवश्यकता है, तो फिर से पालन करने के लिए F। आप नियमित अभिव्यक्ति की तुलना में दृश्य लाइनों को सीमित करने के लिए दबा सकते हैं। लॉग फ़ाइलों के माध्यम से जाने पर बहुत आसान है।


"जब आप कॉपी पेस्ट मोड में होते हैं, तो स्क्रीन प्रक्रिया के आउटपुट पाइप को ब्लॉक कर देगा" - यह एक बार निश्चित मात्रा में आउटपुट उत्पन्न होने के बाद सही हो सकता है, लेकिन यह इस मामले में सही नहीं लगता है: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- कॉपी को लागू करने का प्रयास करें मोड और थोड़ा इंतजार करें। जब आप प्रतिलिपि मोड से बाहर निकलते हैं, तो i का मान कूद जाएगा, यह दिखाते हुए कि निष्पादन पृष्ठभूमि में जारी रहा। फिर भी मैंने कुछ प्रक्रियाओं के लिए स्क्रीन ब्लॉक आउटपुट देखा है, इसलिए मैं उत्सुक हूं कि वास्तव में यह निर्धारित करता है कि स्क्रीन ब्लॉक है या नहीं।
davidA

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