tmux перестает отвечать при отслеживании быстро обновляемого файла

У меня есть файл журнала, в котором я записываю несколько сотен строк в секунду. Я хочу добавить это в панель tmux.

Однако, когда я делаю это, tmux перестает отвечать на запросы - я не могу менять панели или окна, и я не могу даже CTRL + C, чтобы остановить хвост.

Примерно через 3 минуты или около того хвост будет в конечном итоге убит CTRL + C, и я вернусь к контролю - но до этого я ничего не могу сделать (кроме перехода из терминала в другое окно, такое как мой браузер).

Есть ли способ решить эту проблему? Я подозреваю, что проблема вызвана тем, что в файл журнала записывается так много строк.

4
задан 10 July 2013 в 14:22

4 ответа

Это было значительно улучшено в tmux 2.1.

Опции c0, упомянутые в других ответах, были удалены и введен подход к буферизации: https://raw.githubusercontent.com/tmux/tmux/master/CHANGES [ 112]

0
ответ дан 10 July 2013 в 14:22

Это, скорее всего, не связано с тем, что файл журнала хвостов записывается несколько сотен раз в секунду.

Попробуйте подключиться к серверу или открыть другой сеанс терминала, используйте strace для подключения к процессу tmux, посмотрите системные вызовы и сигналы, полученные процессом. Это определенно поможет.

Пример: strace -tT -pPID

Вывод в файл strace -tT -pPID -o /path/to/tmux_output

ПРИМЕЧАНИЕ: strace - легкий отладчик, он помог мне решить несколько связанных с tmux проблема в прошлом, например tmux не может создавать / удалять файлы / каталоги в /var/run или /run.

0
ответ дан 10 July 2013 в 14:22

Проблема, скорее всего, связана с накладными расходами 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 / сек).

0
ответ дан 10 July 2013 в 14:22

Я знаю, что это не решит вашу проблему, но попробуйте перенаправить вывод команды в less или more:

  • less позволяет прокрутите изнутри даже не прокручиваемый терминал:

    <command> | less
    
  • more печатает страницу, затем вы нажимаете ввод, чтобы вызвать каждую строку после этого:

    <command> | more
    
    [ 117]
0
ответ дан 10 July 2013 в 14:22

Другие вопросы по тегам:

Похожие вопросы: