Я интенсивно использую экранную команду «log» для записи результатов сеанса в файл, когда я делаю изменения в данной среде. Я искал справочную страницу tmux, но не смог найти эквивалент. Кто-нибудь знает о подобной функции в tmux, или я должен написать свои собственные сценарии оболочки, чтобы сделать это?
РЕДАКТИРОВАТЬ: я знаю «скрипт» и другие утилиты, которые позволяют мне записывать сеанс. Причиной того, что функциональность экрана является настолько полезной, является возможность определить переменную файла журнала, которая использует экранирование строк для уникальной идентификации каждого сеанса.
Например, у меня есть функция оболочки, которая, учитывая имя хоста, будет SSH к этому хосту в новом окне экрана и установить заголовок окна в имя хоста. Когда я запускаю журнал этой сессии, он начинается с заголовка окна.
Если эта функциональность не существует в tmux, мне придется создать новый набор функций оболочки для настройки «сценариев» сеансов, которые я хочу регистрировать. Это не очень сложно, но это может не стоить усилий, учитывая, что экран делает именно то, что мне уже нужно.
источник
tmux pipe-pane …
команду в свойdefault-command
(т.е. перед запуском оболочки); конечно, это будет работать только для панелей «по умолчанию» (например, ничего не начиналось с явных командnew-window sqlite3
). Были намеки на то, что поддержка «hook» может появиться в некоторых будущих версиях tmux ; это может позволить вам настроить команду (напримерpipe-pane …
) , которые будут автоматически запускаться после какой - либо другой командыnew-session
,new-window
илиsplit-pane
).read
иdate
организовать ее. Напримерbind-key H pipe-pane -o 'exec bash -c "while IFS= read -r line; do echo \"\$(date +%%Y%%m%%dT%%H%%M%%SZ%%z): \$line\"; done" >>$HOME/"#W-tmux.log"'
date
каждой строки вывода будет серьезным ударом по производительности! Намного лучшеprintf '%(%Y%m%dT%H%M%S)T: %s\n' "$line"
(экранирование по мере необходимости для включения в конфигурационный файл tmux, таким образом, вероятно, удваивая%s
и экранируя"
s).Вот плагин tmux, который позволяет вести логи без связывания клавиш в
.tmux.conf
:https://github.com/tmux-plugins/tmux-logging
Особенности:
prefix + P
переключает логирование панели. Вывод очищается от нежелательных символов ANSI!prefix + Alt + P
сохраняет полную историю панели в файлисточник
Просматривая документацию по tmux, я не могу найти эквивалента регистрации в окне экрана. Похоже, вам придется использовать функции оболочки, чтобы делать то, что вы хотите, или просто использовать экран. Вы можете включить отладку, которая регистрирует как серверную, так и клиентскую стороны, но также включает в себя множество посторонних журналов, связанных с tmux, так что это не совсем то, что вы просите.
Вы можете использовать буфер обмена tmux, чтобы автоматизировать сохранение буфера в другой сеанс, который будет настроен на прием содержимого буфера обмена и сохранение в файл. Это кажется немного хакерским.
источник
я делаю это используя скрипт, это из моего файла tmux.conf
источник
log
команде экрана , которая позволяет регистрироваться на лету. Но тогда, если вы находитесь в tmux и хотите использовать логи экрана, вам все равно нужно запустить новую оболочку.