Jeśli uruchomię polecenie z dużą ilością danych wyjściowych w tmux, ale zdecyduję się je anulować za pomocą Ctrl-C, opóźnienie wynosi 10-15 sekund. Jeśli jednak zrobię to samo poza tmux, natychmiast się zatrzyma. Dlaczego tak jest i czy można to naprawić?
W praktyce ten problem pojawia się, gdy robię grep -R
duży katalog, a moje wyszukiwanie nie jest wystarczająco ograniczone. Obejściem tego problemu byłoby przesunięcie wyniku w wc
pierwszej kolejności, aby upewnić się, że wynik nie jest zbyt długi, ale to tylko kolejny krok, którego chciałbym uniknąć.
Uwagi:
- Zachowuje się tak samo w Gnome Terminal, uxterm, st i zwykłym wirtualnym terminalu (np. Ctrl-alt-f2), ale opóźnienie jest mniejsze w zwykłym wirtualnym terminalu.
- Nie jestem jedyny: http://www.mail-archive.com/[email protected]/msg01569.html
- Opóźnienie jest dłuższe, jeśli moje okno terminala jest większe. W przypadku terminala pełnoekranowego zatrzymanie
grep -R
(bez innych argumentów) zajmuje około 15 sekund w zaśmieconym katalogu domowym. W przypadku terminala o wymiarach 80 × 25 zatrzymuje się niemal natychmiast.
grep -R "a" ~/
(nie zapisuję do pliku) ... ayes | nl | cut -f1 | head -9999999 > ~/file
potemcat ~/file
.Odpowiedzi:
tmux ma teraz następujące opcje:
Możesz ustawić dla nich wartości, które ułatwią pisanie ^ C i znajomych. Zobacz
man tmux
:źródło
setw -g c0-change-trigger 10
setw -g c0-change-interval 250
>> ~ / .tmux.confZawsze możesz wydać
kill-pane
polecenie z poziomu sesji. Jeśli tekst terminala przypomina śmieci, zmiana nazwy okna i / lub wydaniereset
powinno to naprawić.źródło
Ponieważ
tmux
wstawia się międzycat
proces a terminalem, musi odczytać dane wyjściowecat
, zapisać je na terminalu, a jednocześnie odczytać dane wejściowe z terminala (^ C) i wysłać je do powłoki, aby przerwać dowództwo. Nie jestem pewien, co dokładnie powoduje opóźnienie, ale jest coś o tym, jaktmux
buforuje we / wy między tobą a działającą powłokątmux
.źródło
Zakładając, że używasz ssh przez połączenie o niskim opóźnieniu, czy próbowałeś używać mosh ? Wśród innych bardzo fajnych rzeczy, takich jak przewidywanie danych wejściowych, a także przetrwanie rozłączeń, a nawet zmiana adresu IP po stronie klienta, w szczególności poprawia on czas reakcji przy użyciu Ctrl-C (poprzez okresową aktualizację zawartości terminala zamiast wysyłania całego strumienia) .
Możesz używać
tmux
wewnątrzmosh
bez żadnych problemów.źródło
Miałem ten problem z tmux 2.3. Próbowałem ustawić opcje c0-interwał zmiany i c0-zmiana wyzwalacza, jak opisano powyżej, ale nie są one już dostępne. Oto zmiana git w nowym podejściu: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d
Powrót do tmux 1.8 naprawił problem bez konieczności ustawiania żadnych opcji.
źródło