Use o tmux para gerenciar vários downloaders como um serviço supervisorctl?

0

Tenho muitos servidores de dados dos quais preciso fazer o download de dados via http assim que estiverem disponíveis. Para cada servidor, inicio um loop bash " while true " e, dentro dele, wget para pesquisar novos dados no servidor. Para iniciar todo o bash s eu criei um tmux config iniciando uma janela para cada loop tal loop e wget . Isso adiciona o benefício de facilitar a inspeção do que está acontecendo.

Eu quero criar um supervisor -service dessa configuração, o que me permitiria iniciar, parar e reiniciar esse tmux e seus clientes de download de uma só vez.

No entanto, quando eu sair do tmux , pela própria natureza de tmux , o bash s e o wget s continuam em execução. Existe uma maneira de contornar isso, para que eu possa sair de tudo e reiniciar tudo com um simples supvervisorctl tmuxservice restart ?

    
por AME 27.01.2014 / 12:07

1 resposta

1

A página man do tmux possui os seguintes comandos que você pode achar úteis:

kill-server Kill the tmux server and clients and destroy all sessions.

kill-session [-t target-session] Destroy the given session, closing any windows linked to it and no other sessions, and detaching all clients attached to it.

list-clients [-t target-session] (alias: lsc) List all clients attached to the server. If target-session is specified, list only clients connected to that session.

list-commands (alias: lscm) List the syntax of all commands supported by tmux.

list-sessions (alias: ls) List all sessions managed by the server.

Você pode usar estes comandos dentro do tmux como segue, por exemplo:

  tmux list-commands

Agora você pode listar suas sessões,

   tmux list-clients 

e agora você pode matar exatamente o cliente que escolher, por meio de

  tmux kill-session -t 1

(se você quiser matar a primeira sessão, por exemplo). Ao fazer isso, as sessões não são simplesmente separadas, elas são mortas. Veja este exemplo:

 $ tmux list-session
   1: 1 windows (created Sun Jan 26 20:31:16 2014) [271x63] (attached)
   4: 1 windows (created Mon Jan 27 22:38:14 2014) [103x28] (attached)
 $ tmux  list-clients
   /dev/pts/6: 1 [271x64 xterm] (utf8) 
   /dev/pts/7: 4 [103x29 xterm] (utf8) 

 $ ps ax | grep ssh
   1160 ?        Ss     0:00 /usr/sbin/sshd -D
   1811 ?        Ss     0:00 ssh-agent
  10733 pts/0    S+     0:00 ssh -Y me@sony
  11093 pts/13   S+     0:00 grep --color=auto ssh
 $ tmux kill-session -t 1
 $ ps ax | grep ssh
   1160 ?        Ss     0:00 /usr/sbin/sshd -D
   1811 ?        Ss     0:00 ssh-agent
  12043 pts/13   S+     0:00 grep --color=auto ssh

Como você pode ver, eu tinha uma conexão ssh ativa para um pc chamado sony , na sessão 1 do tmux. Quando eu matei, a conexão desapareceu.

Acho que é assim que esses comandos ajudarão você.

    
por 28.01.2014 / 09:48