使用 tmux 作为 Supervisorctl 服务来管理多个下载器?

使用 tmux 作为 Supervisorctl 服务来管理多个下载器?

我有许多数据服务器,我需要在数据可用时立即通过 http 下载数据。对于每个服务器,我都会启动一个bashwhile true”循环,并在其中wget轮询服务器以获取新数据。为了启动所有服务器,bash我创建了一个tmux配置,为每个循环启动一个窗口,例如循环和wget。这增加了更容易检查正在发生的事情的好处。

我想supervisor从这个配置创建一个服务,它将允许我tmux同时启动、停止和重新启动它及其下载客户端。

但是,当我退出 时tmux,由于 的本质tmuxbashs 及其wgets 仍会继续运行。有没有办法解决这个问题,让我可以退出所有内容,然后使用简单的 重新启动所有内容supvervisorctl tmuxservice restart

答案1

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

正如你所看到的,我有一个活跃的远程控制连接到 PC 称为索尼,在 tmux 的会话 1 中。当我终止它时,连接就消失了。

我认为这些命令会这样帮助你。

相关内容