¿Usar tmux para administrar múltiples descargadores como un servicio supervisorctl?

¿Usar tmux para administrar múltiples descargadores como un servicio supervisorctl?

Tengo muchos servidores de datos desde los que necesito descargar datos a través de http tan pronto como estén disponibles. Para cada servidor inicio un bash" while true"-bucle y dentro de él wgetpara sondear el servidor en busca de nuevos datos. Para iniciar todos los bashs, creé una tmuxconfiguración que inicia una ventana para cada bucle, como bucle y wget. Esto añade el beneficio de inspeccionar más fácilmente lo que está sucediendo.

Quiero crear un supervisorservicio a partir de esta configuración, que me permita iniciar, detener y reiniciar este tmuxy sus clientes de descarga, todo a la vez.

Sin embargo, cuando lo dejo tmux, por la propia naturaleza de tmux, los bashs y los suyos wgetsiguen ejecutándose. ¿Hay alguna forma de evitarlo para poder salir de todo y reiniciarlo todo con un simple comando supvervisorctl tmuxservice restart?

Respuesta1

Elpágina de manual de tmuxtiene los siguientes comandos que pueden resultarle útiles:

kill-server Mata el servidor y los clientes tmux y destruye todas las sesiones.

kill-session [-t target-session] Destruye la sesión dada, cerrando todas las ventanas vinculadas a ella y ninguna otra sesión, y desconectando todos los clientes conectados a ella.

list-clients [-t target-session] (alias: lsc) Enumera todos los clientes conectados al servidor. Si se especifica sesión de destino, enumere solo los clientes conectados a esa sesión.

list-commands (alias: lscm) Muestra la sintaxis de todos los comandos admitidos por tmux.

list-sessions (alias: ls) Enumera todas las sesiones administradas por el servidor.

Puede utilizar estos comandos dentrotmuxcomo sigue, por ejemplo:

  tmux list-commands

Ahora puedes enumerar tus sesiones,

   tmux list-clients 

y ahora puedes matar exactamente al cliente que elijas, mediante

  tmux kill-session -t 1

(si desea finalizar la primera sesión, por ejemplo). Al hacerlo, las sesiones no simplemente se separan, sino que se matan. Vea este ejemplo:

 $ 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 puedes ver, tenía un activosshconexión a una pc llamadasony, en la sesión 1 de tmux. Cuando lo maté, la conexión desapareció.

Creo que así es como te ayudarán estos comandos.

información relacionada