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

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

Tenho muitos servidores de dados dos quais preciso baixar dados via http assim que estiverem disponíveis. Para cada servidor eu inicio um bash" while true"-loop e dentro dele wgetfaço uma pesquisa no servidor em busca de novos dados. Para iniciar todos os bashs criei uma tmuxconfiguração iniciando uma janela para cada loop como loop e wget. Isso adiciona o benefício de inspecionar mais facilmente o que está acontecendo.

Quero criar um supervisor-service a partir desta configuração, que me permita iniciar, parar e reiniciar este tmuxe seus clientes de download de uma só vez.

No entanto, quando eu desisto tmux, pela própria natureza do tmux, os bashs e os deles wgetcontinuam funcionando. Existe uma maneira de contornar isso, para que eu possa sair de tudo e reiniciar tudo com um simples supvervisorctl tmuxservice restart?

Responder1

Opágina de manual do tmuxtem os seguintes comandos que você pode achar úteis:

kill-server Mate o servidor e os clientes tmux e destrua todas as sessões.

kill-session [-t target-session] Destrua a sessão fornecida, fechando todas as janelas vinculadas a ela e nenhuma outra sessão, e desanexando todos os clientes anexados a ela.

list-clients [-t target-session] (alias: lsc) Lista todos os clientes conectados ao servidor. Se a sessão de destino for especificada, liste apenas os clientes conectados a essa sessão.

list-commands (alias: lscm) Lista a sintaxe de todos os comandos suportados pelo tmux.

list-sessions (alias: ls) Lista todas as sessões gerenciadas pelo servidor.

Você pode usar esses comandos dentrotmuxcomo 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 encerrar a primeira sessão, por exemplo). Ao fazer isso, as sessões não são simplesmente desconectadas, elas são eliminadas. 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 tive uma atividade ativasshconexão a um pc chamadosony, na sessão 1 do tmux. Quando eu o matei, a conexão desapareceu.

Acho que é assim que esses comandos irão ajudá-lo.

informação relacionada