Использовать tmux для управления несколькими загрузчиками в качестве службы supervisorctl?

Использовать tmux для управления несколькими загрузчиками в качестве службы supervisorctl?

У меня много серверов данных, с которых мне нужно загружать данные через http, как только они становятся доступны. Для каждого сервера я запускаю bash" while true"-цикл и внутри него wgetопрашиваю сервер на наличие новых данных. Чтобы запустить все bashs, я создал tmuxконфигурацию, запускающую окно для каждого цикла, такого как цикл и wget. Это добавляет преимущество более легкой проверки того, что происходит.

Я хочу создать supervisorслужбу из этой конфигурации, которая позволит мне запускать, останавливать и перезапускать ее tmuxи ее загружающие клиенты одновременно.

Однако, когда я выхожу tmux, по самой природе tmux, bashs и их wgets продолжают работать. Есть ли способ обойти это, так что я могу выйти из всего и перезапустить все с помощью простого supvervisorctl tmuxservice restart?

решение1

Theстраница руководства tmuxимеет следующие команды, которые могут оказаться вам полезными:

kill-server Уничтожить сервер и клиентов tmux и уничтожить все сеансы.

kill-session [-t target-session] Уничтожает указанный сеанс, закрывая все связанные с ним окна и никакие другие сеансы, а также отключая всех клиентов, подключенных к нему.

list-clients [-t target-session] (псевдоним: lsc) Список всех клиентов, подключенных к серверу. Если указан target-session, вывести список только клиентов, подключенных к этому сеансу.

list-commands (псевдоним: lscm) Перечисляет синтаксис всех команд, поддерживаемых tmux.

list-sessions (псевдоним: ls) Выводит список всех сеансов, управляемых сервером.

Вы можете использовать эти команды внутриtmuxнапример, следующим образом:

  tmux list-commands

Теперь вы можете составить список своих сессий,

   tmux list-clients 

и теперь вы можете убить именно того клиента, которого вы выберете, с помощью

  tmux kill-session -t 1

(например, если вы хотите убить первую сессию). При этом сессии не просто отсоединяются, они убиваются. Смотрите этот пример:

 $ 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

Как вы видите, у меня был активныйсшподключение к ПК называетсясони, в сеансе 1 tmux. Когда я его убил, соединение исчезло.

Я думаю, что именно так эти команды вам помогут.

Связанный контент