使用 tmux 作為 Supervisorctl 服務來管理多個下載器?

使用 tmux 作為 Supervisorctl 服務來管理多個下載器?

我有很多數據伺服器,我需要在數據可用時立即透過 http 下載數據。對於每個伺服器,我啟動一個bashwhile true”循環,並在其中wget輪詢伺服器以獲取新資料。為了啟動所有的bashs,我創建了一個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)列出連接到伺服器的所有客戶端。如果指定了目標會話,則僅列出連線到該會話的用戶端。

list-commands(別名:lscm)列出 tmux 支援的所有指令的語法。

list-sessions(別名:ls)列出伺服器管理的所有會話。

您可以在其中使用這些命令多路復用器例如如下:

  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

正如你所看到的,我有一個活躍的SSH連接到名為索尼,在 tmux 的會話 1 中。當我殺死它時,聯繫就消失了。

我認為這就是這些命令對您的幫助。

相關內容