Existe um equivalente do comando “log” do GNU Screen no tmux?

34

Eu faço uso pesado do comando "log" da tela para registrar a saída de uma sessão em um arquivo, quando estou fazendo alterações em um determinado ambiente. Eu procurei pela man page do tmux, mas não consegui encontrar um equivalente. Alguém está ciente de um recurso semelhante no tmux, ou eu tenho que escrever meus próprios scripts de wrapper para fazer isso?

EDIT: Estou ciente de 'script' e outros utilitários que me permitem registrar uma sessão. A razão pela qual a funcionalidade da tela é tão útil é a capacidade de definir uma variável de arquivo de log que usa escores de string para identificar exclusivamente cada sessão.

por exemplo. Eu tenho uma função de shell que, dado um nome de host, SSH para aquele host em uma nova janela de tela e definir o título da janela para o hostname. Quando eu inicio um log dessa sessão, é prefixado com o título da janela.

Se esta funcionalidade não existir no tmux, terei que criar um novo conjunto de funções do shell para configurar 'scripts' de sessões que eu quero registrar. Isso não é muito difícil, mas pode não valer a pena o esforço dado que a tela faz exatamente o que eu preciso.

    
por Murali Suriar 14.01.2011 / 01:35

4 respostas

38

Deixe-me ver se decifrei sua configuração tela corretamente:

  • Você usa algo como logfile "%t-screen.log" (provavelmente em um arquivo .screenrc ) para configurar o nome do arquivo de log que será iniciado posteriormente.
  • Você usa o comando title <hostname> (C-a A) tela para definir o título de uma nova janela ou você faz screen -t <hostname> ssh0 <hostname> para iniciar uma nova sessão de tela.
  • Você usa o comando C-a H (C-a: log) tela para alternar o registro em log para o arquivo configurado.

Se sim, então é quase equivalente (requer tmux 1.3+ para suportar #W no comando pipe-pane shell; pipe-pane está disponível em tmux 1.0+ ):

  • Em um arquivo de configuração (por exemplo, .tmux.conf ):

    bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
    
  • Use tmux rename-window <hostname> (C-b) para renomear uma janela existente ou use tmux new-window -n <hostname> 'ssh <hostname>' para iniciar uma nova janela tmux , ou use tmux new-session -n <hostname> 'ssh <hostname>' para iniciar uma nova sessão tmux .
  • Use C-b H para alternar o registro.

Não há notificação de que o log foi alternado, mas você pode adicionar um, se quiser:

bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'

Observação: a linha acima é mostrada como se estivesse em um arquivo de configuração ( .tmux.conf ou um você source ). tmux precisa ver tanto a barra invertida quanto o ponto-e-vírgula; Se você quiser configurar isso a partir de um shell (por exemplo, tmux bind-key … ), você terá que escapar ou citar os dois caracteres adequadamente para que eles sejam entregues a tmux intactos. Não parece ser uma maneira conveniente de mostrar mensagens diferentes para ativar / desativar o uso ao usar apenas uma única ligação (você pode manipular algo com if-shell , mas provavelmente seria feio). Se duas ligações forem aceitáveis, tente isto:

bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'
bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'
    
por 29.03.2011 / 05:51
4

Depois de examinar a documentação do tmux, não consigo encontrar nenhum equivalente do log da janela da tela. Parece que você teria que usar suas funções de shell para fazer o que quiser ou apenas usar a tela. Você pode ativar a depuração, que registra tanto o servidor quanto o lado do cliente, mas também inclui muitos logs externos relacionados ao tmux, então não é exatamente o que você está pedindo.

Você poderia usar a área de transferência do tmux para automatizar o salvamento do buffer para outra sessão, que seria configurada para aceitar o conteúdo da área de transferência e salvar em um arquivo. Isso parece um pouco hackish.

    
por 21.01.2011 / 17:00
3

Aqui está um plug-in tmux que permite o registro em log sem mexer nas combinações de teclas em .tmux.conf :

link

Recursos:

  • prefix + P alterna o registro no painel. A saída é apagada de caracteres ANSI indesejados!
  • prefix + Alt + P salva o histórico completo do painel em um arquivo
por 10.08.2014 / 15:54
1

eu faço isso usando script, isso é do meu arquivo tmux.conf

bind ^C new-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"
bind c new-window "script -f /home/jcosta/mydocs/work/logs/$( date '+%d%m%Y_%H%M%S')_$$.log"
bind | split-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"
    
por 28.03.2011 / 22:42