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


0

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

我想supervisor从此配置创建-service,这将允许我立即启动,停止和重新启动该服务tmux及其下载客户端。

但是,当我退出时tmux,根据和的本质tmuxbash它们和它们wget继续运行。有没有办法解决这个问题,所以我可以用简单的方法退出所有内容并重新启动所有内容supvervisorctl tmuxservice restart


为什么不使用简单的kill服务器?
MariusMatutiae 2014年

我不知道吗 您提到的命令如何用于实现我的任务?
AME 2014年

Answers:


1

TMUX手册页有可能对您有用以下命令:

kill-server杀死tmux服务器和客户端并销毁所有会话。

kill-session [-t target-session]销毁给定的会话,关闭链接到该窗口的所有窗口,不关闭其他会话,并分离附加到该会话的所有客户端。

list-clients [-t目标会话](别名:lsc)列出连接到服务器的所有客户端。如果指定了目标会话,则仅列出连接到该会话的客户端。

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

如您所见,在tmux的会话1中,我已与名为sony的PC建立了有效的ssh连接。当我杀死它时,连接消失了。

我认为这是这些命令将为您提供帮助的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.