6

Я могу запустить команду в отдельном сеансе tmux с:

tmux new -d 'while true; do date; sleep 1; done'

Я могу запустить команду в прикрепленном сеансе tmux и записать вывод консоли:

tmux new 'while true; do date; sleep 1; done' \; pipe-pane 'bzip2 > /tmp/log.bz2'

Но как я могу выполнить команду в отдельном сеансе tmux И записать вывод консоли? Следующее запускает команду в отдельном сеансе tmux, но молча не может записать вывод:

tmux new -d 'while true; do date; sleep 1; done' \; pipe-pane 'bzip2 > /tmp/log.bz2'

Самое близкое, что я смог получить, это следующее: он запускает команду в неотсоединенном tmux, начинает запись в журнал, а затем отключает:

tmux new 'while true; do date; sleep 1; done'  pipe-pane 'bzip2 > /tmp/log.bz2' \; detach

Это работает, но печатает следующее бред на консоли после:

^[[?62;9;c

Как правильно это сделать?

2 ответа2

4

Надеюсь, к настоящему времени вы нашли ответ на эту странность. Вот что я нашел:

При использовании tmux 1.8 (по умолчанию на centos 7) у меня возникла та же проблема, что и у вас. Поэтому вместо этого я удалил эту версию и скомпилировал из исходной версии 2.2 tmux.

Начиная с этой версии, следующее работает без странных символов:

tmux new -d 'while true; do date; sleep 1; done' \; pipe-pane 'cat > /tmp/log'

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

Помните, что журнал будет содержать некоторые управляющие символы. Как ^ C, при выходе из цикла while.


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

0

Вы можете запустить скрипт в отдельных сеансах tmux и записать как stdout, так и stderr в файл, примерно так:

tmux new -d 'script.sh |& tee tmux.log'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .