Tmux zum Verwalten mehrerer Downloader als Supervisorctl-Dienst verwenden?

Tmux zum Verwalten mehrerer Downloader als Supervisorctl-Dienst verwenden?

Ich habe viele Datenserver, von denen ich Daten über http herunterladen muss, sobald sie verfügbar sind. Für jeden Server starte ich eine bash" while true"-Schleife und darin ein , wgetum den Server nach neuen Daten abzufragen. Um alle bashs zu starten, habe ich eine Konfiguration erstellt, die tmuxfür jede Schleife (wie Schleife und ) ein Fenster startet wget. Dies bietet den Vorteil, dass man leichter überprüfen kann, was passiert.

Ich möchte aus dieser Konfiguration einen Dienst erstellen supervisor, der es mir ermöglicht, diesen tmuxund seine Download-Clients gleichzeitig zu starten, zu stoppen und neu zu starten.

Wenn ich jedoch beende , laufen die s und ihre s tmuxaufgrund der Natur von weiter. Gibt es eine Möglichkeit, das zu umgehen, sodass ich alles beenden und mit einem einfachen neu starten kann ?tmuxbashwgetsupvervisorctl tmuxservice restart

Antwort1

Dertmux-Manpageverfügt über die folgenden Befehle, die Sie möglicherweise nützlich finden:

kill-server Beenden Sie den Tmux-Server und die Clients und zerstören Sie alle Sitzungen.

kill-session [-t Ziel-Sitzung] Zerstört die angegebene Sitzung, schließt alle mit ihr verknüpften Fenster und keine anderen Sitzungen und trennt alle daran angeschlossenen Clients.

list-clients [-t target-session] (alias: lsc) Listet alle Clients auf, die mit dem Server verbunden sind. Wenn target-session angegeben ist, listet es nur die Clients auf, die mit dieser Sitzung verbunden sind.

List-Commands (Alias: lscm) Listet die Syntax aller von tmux unterstützten Befehle auf.

list-sessions (Alias: ls) Listet alle vom Server verwalteten Sitzungen auf.

Sie können diese Befehle verwenden innerhalbtmuxbeispielsweise wie folgt:

  tmux list-commands

Sie können nun Ihre Sitzungen auflisten,

   tmux list-clients 

und Sie können nun genau den Client Ihrer Wahl beenden, indem Sie

  tmux kill-session -t 1

(wenn Sie beispielsweise die erste Sitzung beenden möchten). Dabei werden die Sitzungen nicht einfach getrennt, sondern beendet. Sehen Sie sich dieses Beispiel an:

 $ 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

Wie Sie sehen, hatte ich eine aktivesshVerbindung zu einem PC namensSony, in Sitzung 1 von tmux. Als ich es beendete, verschwand die Verbindung.

Ich denke, diese Befehle werden Ihnen dabei helfen.

verwandte Informationen