![Usar o tmux para gerenciar vários downloaders como um serviço supervisorctl?](https://rvso.com/image/1395394/Usar%20o%20tmux%20para%20gerenciar%20v%C3%A1rios%20downloaders%20como%20um%20servi%C3%A7o%20supervisorctl%3F.png)
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 wget
faço uma pesquisa no servidor em busca de novos dados. Para iniciar todos os bash
s criei uma tmux
configuraçã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 tmux
e seus clientes de download de uma só vez.
No entanto, quando eu desisto tmux
, pela própria natureza do tmux
, os bash
s e os deles wget
continuam 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.