Ctrl-C के साथ प्रक्रिया को बाधित करने के लिए tmux धीमा


25

अगर मैं tmux में बहुत अधिक आउटपुट के साथ कमांड चलाता हूं, लेकिन इसे Ctrl-C के साथ रद्द करने का निर्णय लेता है, तो रुकने से पहले 10-15 सेकंड का अंतराल है। हालांकि, अगर मैं tmux के बाहर एक ही काम करता हूं, तो यह तुरंत बंद हो जाता है। यह क्यों है, और क्या यह ठीक है?

व्यवहार में, यह मुद्दा तब आता है जब मैं grep -Rएक बड़ी निर्देशिका पर काम कर रहा होता हूं और मेरी खोज पर्याप्त रूप से बाधित नहीं होती है। वर्कअराउंड यह सुनिश्चित करने के लिए परिणाम को पाइप wcकरने के लिए होगा कि आउटपुट बहुत लंबा नहीं है, लेकिन यह सिर्फ एक और कदम है जिससे मैं बचना चाहूंगा।


टिप्पणियाँ:

  • Gnome Terminal, uxterm, st और सादे आभासी टर्मिनल (जैसे, ctrl-alt-f2) में इसका व्यवहार समान है, लेकिन विलंब सादा आभासी टर्मिनल में कम है।
  • मैं केवल एक ही नहीं हूँ: http://www.mail-archive.com/tmux-users@lists.sourceforge.net/msms015015.html
  • अगर मेरी टर्मिनल विंडो बड़ी है तो देरी अधिक लंबी है। फुलस्क्रीन टर्मिनल के लिए, grep -Rक्लॉट किए गए होम डायरेक्टरी में (कोई अन्य तर्क नहीं) रोकने के लिए लगभग 15 सेकंड लगते हैं । 80 × 25 वर्ण टर्मिनल के लिए, यह लगभग तुरंत बंद हो जाता है।

मुझे कोई फर्क नहीं पड़ता। मैंने कोशिश की है grep -R "a" ~/(फ़ाइल में नहीं लिख रहा हूँ ) ... और yes | nl | cut -f1 | head -9999999 > ~/fileफिर cat ~/file
पीटर।

@ पीटर.ओ. सिर्फ़ इनपुट "हाँ" फिर एंटर दबाएं, आपका tmux बर्बाद हो गया है।
सोलोटिम

जवाबों:


10

tmux में अब निम्नलिखित विकल्प हैं:

c0-change-interval interval
c0-change-trigger trigger

आप इनके लिए मान सेट कर सकते हैं, जिससे ^ C और दोस्तों को टाइप करना आसान हो जाएगा। देखें man tmux:

ये दो विकल्प एक फलक के लिए दर को सीमित करने के सरल रूप को कॉन्फ़िगर करते हैं। अगर tmux एक मिलीसेकंड में स्क्रीन को संशोधित करने वाले C0 दृश्यों को ट्रिगर करता है (उदाहरण के लिए, गाड़ी का रिटर्न, लाइनफीड या बैकस्पेस), तो यह तुरंत पैन को अपडेट करना बंद कर देगा और इसके बजाय इसे पूरी तरह से हर अंतराल को फिर से परिभाषित करेगा। यह तेजी से उत्पादन को रोकने में मदद करता है (जैसे हाँ (1)) टर्मिनल को भारी। डिफ़ॉल्ट 250 का ट्रिगर और 100 का अंतराल है। शून्य का ट्रिगर रेट सीमित करता है।


यह स्वीकृत समाधान होना चाहिए, क्योंकि यह काम करता है।
पॉलि जुएल 25'14

2
जैसे setw -g c0-change-trigger 10 setw -g c0-change-interval 250>> ~ / .tmux.conf
दिमित्रीसंडलोव

2
मैंने इन्हें tmux 2.3 पर आज़माया और वे पहचाने नहीं गए। यह पूरी तरह से अनुपयोगी हो जाता है, जब कमांड बहुत सारे आउटपुट पैदा करते हैं।
Ijt

1
Tmux 2.1 के बाद से, ये विकल्प अब raw.githubusercontent.com/tmux/tmux/2.6/CHANGES के अनुसार मौजूद हैं । C0- * रेट-लिमिटिंग के विकल्प हटा दिए गए हैं। इसके बजाय, एक बैकऑफ़ दृष्टिकोण का उपयोग किया जाता है।
मेगर

7

आप हमेशा kill-paneसत्र के भीतर से आदेश जारी कर सकते हैं । यदि टर्मिनल टेक्स्ट विंडो की तरह कचरा का नाम बदलने और / या जारी resetकरने पर इसे ठीक करना चाहिए।


4

चूंकि प्रक्रिया और अपने टर्मिनल के tmuxबीच खुद को सम्मिलित कर रहा है cat, इसे आउटपुट को पढ़ने के लिए, इसे टर्मिनल पर catलिखने की आवश्यकता है, और साथ ही साथ टर्मिनल (^ C) से अपना इनपुट पढ़ें और इसे बाधित करने के लिए शेल में भेजें। आदेश। मुझे यकीन नहीं है कि देरी का क्या कारण है, लेकिन यह कुछ इस बारे में है कि tmuxआपके और शेल के बीच में I / O कैसे बफ़र करता है tmux


3

मान लें कि आप कम-विलंबता कनेक्शन पर ssh का उपयोग कर रहे हैं, तो क्या आपने mosh का उपयोग करने का प्रयास किया है ? अन्य बहुत अच्छी चीजों जैसे इनपुट भविष्यवाणी के साथ-साथ जीवित डिस्कनेक्ट और यहां तक ​​कि क्लाइंट पक्ष पर एक बदलते आईपी, यह विशेष रूप से Ctrl-C का उपयोग करते समय प्रतिक्रिया समय में सुधार करता है (केवल संपूर्ण स्ट्रीम भेजने के बजाय टर्मिनल सामग्री को समय-समय पर अपडेट करके) ।

आप बिना किसी समस्या के tmuxभीतर उपयोग कर सकते हैं mosh


अजीब तरह से, यह तब होता है जब मैं स्थानीय रूप से काम कर रहा हूं। mosh बहुत साफ लग रहा है, यद्यपि।
स्नोबॉल

1

मुझे tmux 2.3 के साथ यह समस्या आ रही थी। मैंने ऊपर वर्णित के रूप में c0-change-interval और c0-change-ट्रिगर विकल्प सेट करने की कोशिश की, लेकिन वे अब उपलब्ध नहीं हैं। नए प्रयास के समाधान के साथ यहाँ परिवर्तन है: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d

1.8 को tmux में बदलने से मेरे लिए कोई भी विकल्प निर्धारित किए बिना समस्या तय हो गई।


वे वर्कअराउंड का उपयोग करने के बजाय इसे ठीक करने की कोशिश करते दिखाई देते हैं, इसलिए नए संस्करणों को आउटपुट के बारे में और बेहतर होना चाहिए। github.com/tmux/tmux/issues/849
dragon788
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.