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 wget
para sondear el servidor en busca de nuevos datos. Para iniciar todos los bash
s, creé una tmux
configuració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 supervisor
servicio a partir de esta configuración, que me permita iniciar, detener y reiniciar este tmux
y sus clientes de descarga, todo a la vez.
Sin embargo, cuando lo dejo tmux
, por la propia naturaleza de tmux
, los bash
s y los suyos wget
siguen 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.