tmux Ctrl-C ile işlemi kesmek için yavaş


25

Tmux’da çok fazla çıktı olan bir komutu çalıştırdığım halde Ctrl-C ile iptal etmeye karar verirsem, durmadan önce 10-15 saniyelik bir gecikme olur. Ancak aynı şeyi tmux dışında da yaparsam hemen durur. Neden bu ve tamir edilebilir mi?

Uygulamada, bu sorun grep -Rbüyük bir dizinde yaptığımda ortaya çıkıyor ve aramam yeterince kısıtlı değil. Çözüm wc, çıktının çok uzun olmadığından emin olmak için sonucu önce boruya çekmek olacaktır , ancak bu, kaçınmak istediğim başka bir adımdır.


Notlar:

  • Bu, Gnome Terminali, uxterm, st ve düz bir sanal terminalde (ör. Ctrl-alt-f2) aynı davranışa sahiptir, ancak gecikme düz sanal terminalde daha düşüktür.
  • Tek ben değilim: http://www.mail-archive.com/tmux-users@lists.sourceforge.net/msg01569.html
  • Terminal pencerem daha büyükse gecikme daha uzundur. Tam ekranlı bir terminal için, grep -Rkarışık bir ana dizinde durması (başka bir argüman yok) yaklaşık 15 saniye sürer . 80 × 25 karakterlik bir terminal için neredeyse anında durur.

Hiçbir fark göremiyorum. Denedim grep -R "a" ~/(dosyaya yazmıyor) ... ve yes | nl | cut -f1 | head -9999999 > ~/filesonra cat ~/file.
Peter, 02.12'de

@ Peter.O Sadece basitçe "evet" yazıp Enter tuşuna basın, tmux'unuz mahkumdur.
solotim

Yanıtlar:


10

tmux şimdi aşağıdaki seçeneklere sahip:

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

Bunlar için değerleri ayarlayabilirsiniz; bu, ^ C ve arkadaşlarınızın yazmasını kolaylaştıracaktır. Bakınız man tmux:

Bu iki seçenek, bir bölme için basit bir hız sınırlama biçimi yapılandırır. Tmux daha görürse tetikleyici bir milisaniyede (örneğin, satır başları linefeeds backspaces için) ekranı değiştirebilir C0 dizileri, hemen bölmesini güncelleme bırakıp, tamamen her yeniden çizmek olacak aralık milisaniye. Bu, terminale baskı yapan hızlı çıkışı (örneğin (1)) önlemeye yardımcı olur. Varsayılan ayar, 250'lik bir tetikleyici ve 100'lük bir aralıktır. Sıfırlayan bir tetikleyici hız sınırlamasını devre dışı bırakır.


Bu kabul edilen çözüm olmalı, çünkü işe yarıyor.
polim

2
Örneğin setw -g c0-change-trigger 10 setw -g c0-change-interval 250>> ~ / .tmux.conf
DmitrySandalov

2
Bunları tmux 2.3'te denedim ve tanınmadılar. Komutlar çok fazla çıktığı zaman tamamen kullanılamaz hale gelir.
ben

1
Tmux 2.1’den bu yana, bu seçenekler artık raw.githubusercontent.com/tmux/tmux/2.6/CHANGES’e göre mevcut değildir . Hız sınırlaması için c0- * seçenekleri kaldırılmıştır. Bunun yerine, geri dönüş yaklaşımı kullanılır.
megar

7

Her zaman kill-paneoturumun içinden komut verebilirsin . Terminal metni, pencereyi yeniden adlandıran ve / veya veren öğeyi çöp gibi gösteriyorsa resetdüzeltmelidir.


4

Yana tmuxarasına yerleşerek olan catsüreç ve terminal, bu çıktı okumak gerekiyor cat, (^ C) terminaline yazmak ve aynı zamanda terminale gelen giriş okumak ve kesmek için kabuk göndermek komut. Gecikmeye neyin yol tmuxaçtığını tam olarak bilmiyorum, ama bu, sizinle çalışan kovan arasında nasıl G / Ç arabellekleri olduğu hakkında bir şey tmux.


3

Düşük gecikmeli bağlantıda ssh kullandığınızı varsayarsak, mosh kullanmayı denediniz mi? Giriş tahmini gibi sağ kalan bağlantı kesilmeleri ve hatta müşteri tarafında değişen bir IP gibi diğer çok güzel şeyler arasında, Ctrl-C kullanırken (özellikle tüm akışı göndermek yerine periyodik olarak terminal içeriğini güncelleyerek) tepki süresini artırır. .

Herhangi bir problem olmadan tmuxiçinde kullanabilirsiniz mosh.


Garip bir şekilde, bu yerel olarak çalıştığımda oluyor. mosh olsa oldukça temiz görünüyor.
Kartopu

1

Tmux 2.3 ile bu sorunu yaşıyordum. C0-change-range ve c0-change-trigger seçeneklerini yukarıda açıklandığı gibi ayarlamayı denedim, ancak artık kullanılamıyor. İşte yeni denenmiş çözümle git değişikliği: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d

Tmux 1.8'e geri dönmek, benim için herhangi bir seçenek belirlemeden problemi çözdü.


Geçici çözüm kullanmak yerine bunu düzeltmeye çalışıyor gibi görünüyorlar, bu nedenle yeni sürümlerin çıktılar konusunda daha iyi olması gerekir. github.com/tmux/tmux/issues/849
dragon788
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.