Execute o comando na sessão do tmux desanexada e na saída do console de log para o arquivo

6

Eu posso executar um comando em uma sessão do tmux desanexado com:

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

Eu posso executar um comando em uma sessão tmux anexada e registrar a saída do console com:

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

Mas como posso executar um comando em uma sessão do tmux desanexada E registrar a saída do console? O seguinte executa um comando em uma sessão do tmux desanexada, mas silenciosamente falha ao registrar a saída:

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

O mais próximo que consegui é o seguinte, que inicia o comando em um tmux não separado, inicia o log e, em seguida, desanexa:

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

Isso funciona, mas imprime os seguintes detalhes no console depois:

^[[?62;9;c

Qual é o jeito certo de fazer isso?

    
por Ed McMan 13.06.2015 / 20:42

2 respostas

3

Espero que você tenha encontrado uma resposta para essa estranheza. Aqui está o que eu encontrei:

Enquanto usava o tmux 1.8 (padrão no centos 7) eu estava tendo o mesmo problema que você. Então, em vez disso, eu removi essa versão e compilei a partir da versão 2.2 do tmux.

A partir desta versão, o seguinte funciona sem caracteres estranhos:

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

Então, basicamente, deve ter sido um problema com versões mais antigas. Não tenho conhecimento de qual versão corrigiu o problema / recurso, mas sei que o 2.2 funciona como um encanto.

Esteja ciente, o log irá conter alguns caracteres de controle. Como ^ C, ao sair do loop while.

Eu sei que essa é uma pergunta antiga, mas como esse é um resultado bastante alto no google quando procuramos por logoff desmembrado do tmux e me deparei com o mesmo problema imaginei que poderia deixar minha solução aqui para qualquer um que poderia ser ajudado por ele.

    
por 23.05.2016 / 20:59
0

Você pode executar um script em uma sessão do tmux desanexada e registrar tanto o stdout quanto o stderr em um arquivo, com algo parecido com isto:

tmux new -d 'script.sh |& tee tmux.log'
    
por 02.11.2017 / 14:00

Tags