é possível enviar entrada para uma sessão do tmux sem conectar-se a ela?

3

Existe algum comando que eu possa usar para enviar entradas ou comandos para uma determinada sessão / painel do tmux sem se conectar a ele?

É para acesso autônomo,

Eu tenho um aplicativo de console em execução em uma sessão do tmux. Eu quero reiniciá-lo quando uma implantação (usando capistrano) é feita.

É possível?

Basicalle y deseja enviar:

exit
cd ..
cd app
rails console
    
por Arnold Roa 09.12.2017 / 03:00

1 resposta

2

Esta questão tem uma solução no ServerFault:

Ele usa o comando send-keys , documentado nas páginas man:

Segue-se um exemplo "Hello World" que ilustra a utilização do comando send-keys .

  • Etapa 1. Crie uma sessão desanexada:

    user@host:~$ tmux new -d -s foo
    
  • Etapa 2: execute um comando na sessão desanexada:

    user@host:$ tmux send-keys -t foo.0 "echo 'Hello World'" ENTER
    
  • Etapa 3: Anexar à sessão:

    user@host:$ tmux a -t foo
    

Você deve ver o seguinte texto exibido na janela do terminal Tmux:

user@host:$ echo 'Hello World'
Hello World

user@host:$

Isso demonstra que o comando echo foi enviado e executado com sucesso dentro da sessão do tmux.

Uma adaptação dessa técnica para seus comandos pode ser algo como o seguinte:

user@host:~$ tmux send-keys -t foo.0 exit ENTER
user@host:~$ tmux send-keys -t foo.0 "cd .." ENTER
user@host:~$ tmux send-keys -t foo.0 "cd app" ENTER
user@host:~$ tmux send-keys -t foo.0 "rails console" ENTER
    
por 09.12.2017 / 03:15

Tags