В сеансе tmux внутри xterm, когда программы генерируют много выходных данных (как, например, cat very_long_file
весь сеанс в замороженном состоянии на некоторое время. Даже если я нажимаю Ctrl-C, ничто не прерывается. Предположительно, потому что tmux заморожен, и он не передает Ctrl-C в программа, генерирующая вывод. Есть ли способ предотвратить это.
38
Ответы:
Правильное решение - взглянуть на опции c0- * в tmux, чтобы попытаться ограничить скорость вывода. Причина, по которой эта проблема вообще существует, заключается в том, что данные отправляются на терминал быстрее, чем он может их отобразить, поэтому ограничение скорости - единственный способ.
источник
setw -g c0-change-interval 100
иsetw -g c0-change-trigger 250
не имеет никакого значения для меня. Я использую tmux-1.8. Я сделал что-то неправильно?set-window-option -g ...
в свой.tmux.conf
.У меня все еще есть эта проблема в tmux 1.6-2 на Ubuntu 12.10. Один из обходных путей, который я нашел, состоит в том, чтобы отсоединиться от сеанса (префикс + d), а затем повторно присоединить (
tmux attach
хороший кандидат для быстрого псевдонима оболочки). Похоже, что tmux на самом деле быстро реагирует - вы можете подтвердить, что ваш процесс на самом деле немедленно завершен с помощью ctrl-c - блокируется только чертеж. Detatch работает немедленно, и при повторном присоединении чертеж будет пропущен до конца.источник
tmux attach
, верно?tmux attach
.Насколько я знаю, нет способа предотвратить это в текущих выпусках, но некоторая работа продолжается. Вы можете найти некоторые исправления в списке рассылки tmux http://thread.gmane.org/gmane.comp.terminal-emulators.tmux.user/2689 .
Хорошее ключевое слово для поиска в Интернете - «управление потоком».
источник
К сожалению, опции ограничения скорости c0- * были удалены с tmux версии 2.1 ( журнал изменений ). Насколько я знаю, единственный способ настроить ограничение скорости - это обновить переменные, влияющие на него, в исходном коде (tmux.h):
« READ_SIZE - это максимальный размер данных, сохраняемых из pty (верхний водный знак события). READ_BACKOFF - это объем данных, ожидающих вывода в tty, прежде чем pty-чтения будут возвращены. READ_TIME - это сколько времени нужно откатить до следующее чтение (в микросекундах), если tty выше READ_BACKOFF. "
Где вы найдете значения по умолчанию: (по состоянию на tmux v2.2):
источник
Ответ https://superuser.com/a/589896/311481 работает отлично. Я использую следующие значения:
Еще один совет: если вы используете ssh в tmux, используйте вместо этого mosh: http://mosh.mit.edu/ Он ведет себя умнее при отображении вывода программ. Он пытается отобразить последнее состояние экрана, опускающее промежуточные звенья, когда это уместно. Таким образом, tmux никогда не замерзнет, если на его панели генерируется много выходных данных с сессиями mosh внутри.
источник
Попробуйте другой эмулятор терминала. В RedHat 6.5 у konsole (KDE) нет проблемы с зависанием (tmux 2.3 и master); однако, xterm и gnome-Terminal испытывают сильное замораживание.
источник