W sesji tmux wewnątrz xterm, gdy program generuje dużo danych wyjściowych (jak cat very_long_file
cała sesja na chwilę zamrożona. Nawet po naciśnięciu Ctrl-C nic nie jest przerywane. Prawdopodobnie dlatego, że tmux jest zamrożony i nie przekazuje Ctrl-C do program generujący dane wyjściowe. Czy można temu zapobiec.
38
Odpowiedzi:
Prawidłowym rozwiązaniem jest sprawdzenie opcji c0- * tmux, aby spróbować ograniczyć wydajność. Przyczyną tego problemu jest to, że dane są wysyłane do terminala szybciej niż może to wyświetlić, więc ograniczenie prędkości jest jedynym sposobem.
źródło
setw -g c0-change-interval 100
isetw -g c0-change-trigger 250
nie robi dla mnie żadnej różnicy. Używam tmux-1.8. Czy zrobiłem coś nie tak?set-window-option -g ...
do mojego.tmux.conf
.Nadal mam ten problem w tmux 1.6-2 na Ubuntu 12.10. Jednym z rozwiązań, które znalazłem, jest oderwanie się od sesji (przedrostek + d), a następnie ponowne podłączenie (
tmux attach
dobry kandydat na szybki alias powłoki). Wygląda na to, że tmux faktycznie reaguje pod maską --- możesz potwierdzić, że twój proces został zabity natychmiast za pomocą ctrl-c --- to tylko rysunek, który blokuje. Detatch działa natychmiast, a po ponownym podłączeniu rysunek przeskoczy do końca.źródło
tmux attach
, prawda?tmux attach
.O ile wiem, nie ma sposobu, aby temu zapobiec w obecnych wydaniach, ale niektóre prace są w toku. Niektóre łatki można znaleźć na liście mailingowej tmux http://thread.gmane.org/gmane.comp.terminal-emulators.tmux.user/2689 .
Dobrym słowem kluczowym do wyszukiwania w Internecie jest „kontrola przepływu”.
źródło
Niestety, opcje ograniczenia prędkości c0- * zostały usunięte od wersji tmux 2.1 (dziennik zmian ). O ile mi wiadomo, jedynym sposobem na dostosowanie ograniczenia prędkości jest aktualizacja zmiennych wpływających na to w kodzie źródłowym (tmux.h):
„ READ_SIZE to maksymalny rozmiar danych do przechowywania z pty (wysoki znak wodny zdarzenia). READ_BACKOFF to ilość danych oczekujących na wysłanie do tty, zanim odczyty pty zostaną wycofane. READ_TIME to czas, po jakim należy się wycofać przed następny odczyt (w mikrosekundach), jeśli tty jest powyżej READ_BACKOFF. "
Gdzie znajdziesz wartości domyślne: (od tmux v2.2):
źródło
Odpowiedź https://superuser.com/a/589896/311481 działa dobrze. Używam następujących wartości:
Kolejna wskazówka: jeśli używasz ssh w ramach tmux, użyj zamiast tego mosh: http://mosh.mit.edu/ Zachowuje się mądrzej, jeśli chodzi o wyświetlanie wyników programów. W razie potrzeby próbuje wyświetlić ostatnie półprodukty upuszczające półprodukty. Tak więc tmux nigdy się nie zawiesi, jeśli w jego oknach wygenerowanych zostanie wiele wyników z sesjami mosh w środku.
źródło
Wypróbuj inny emulator terminala. W RedHat 6.5 konsola (KDE) nie ma problemu z blokowaniem (tmux 2.3 i master); jednak zarówno xterm, jak i terminal gnomów doświadczają złego zamrażania.
źródło