У меня есть файл журнала, в котором я записываю несколько сотен строк в секунду. Я хочу добавить это в панель tmux.
Однако, когда я делаю это, tmux перестает отвечать на запросы - я не могу менять панели или окна, и я не могу даже CTRL + C, чтобы остановить хвост.
Примерно через 3 минуты или около того хвост будет в конечном итоге убит CTRL + C, и я вернусь к контролю - но до этого я ничего не могу сделать (кроме перехода из терминала в другое окно, такое как мой браузер).
Есть ли способ решить эту проблему? Я подозреваю, что проблема вызвана тем, что в файл журнала записывается так много строк.
Это было значительно улучшено в tmux 2.1.
Опции c0, упомянутые в других ответах, были удалены и введен подход к буферизации: https://raw.githubusercontent.com/tmux/tmux/master/CHANGES [ 112]
Это, скорее всего, не связано с тем, что файл журнала хвостов записывается несколько сотен раз в секунду.
Попробуйте подключиться к серверу или открыть другой сеанс терминала, используйте strace
для подключения к процессу tmux
, посмотрите системные вызовы и сигналы, полученные процессом. Это определенно поможет.
Пример: strace -tT -pPID
Вывод в файл strace -tT -pPID -o /path/to/tmux_output
ПРИМЕЧАНИЕ:
BLOCKQUOTE>strace
- легкий отладчик, он помог мне решить несколько связанных с tmux проблема в прошлом, например tmux не может создавать / удалять файлы / каталоги в/var/run
или/run
.
Проблема, скорее всего, связана с накладными расходами tmux, особенно если у вас вертикальное разделение на панели. Вы можете настроить tmux так, чтобы он не обновлял экран, когда пишется куча управляющих символов. См. man tmux
для более подробной информации, но у меня есть следующее в моем ~ / .tmux.conf .
set -g c0-change-trigger 20 #default is 250
set -g c0-change-interval 1000 #default is 100
Это говорит tmux, что, когда на экран выводятся 20 управляющих последовательностей в миллисекундах, tmux должен изменить интервал обновления на один раз в 1000 миллисекунд (1 / сек).
Я знаю, что это не решит вашу проблему, но попробуйте перенаправить вывод команды в less
или more
:
less
позволяет прокрутите изнутри даже не прокручиваемый терминал:
<command> | less
more
печатает страницу, затем вы нажимаете ввод, чтобы вызвать каждую строку после этого:
<command> | more
[ 117]