![Tmux zum Verwalten mehrerer Downloader als Supervisorctl-Dienst verwenden?](https://rvso.com/image/1395394/Tmux%20zum%20Verwalten%20mehrerer%20Downloader%20als%20Supervisorctl-Dienst%20verwenden%3F.png)
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 , wget
um den Server nach neuen Daten abzufragen. Um alle bash
s zu starten, habe ich eine Konfiguration erstellt, die tmux
fü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 tmux
und seine Download-Clients gleichzeitig zu starten, zu stoppen und neu zu starten.
Wenn ich jedoch beende , laufen die s und ihre s tmux
aufgrund der Natur von weiter. Gibt es eine Möglichkeit, das zu umgehen, sodass ich alles beenden und mit einem einfachen neu starten kann ?tmux
bash
wget
supvervisorctl 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.