Beenden Sie das tmux-Fenster, ohne das Terminal-Programm zu beenden

80

OK, ich bin neu darin. Ich habe installiert tmux, um ein mehrtägiges Experiment durchzuführen. Nach dem Tippen tmux new -s namebekam ich ein neues Fenster mit einem grünen Banner am unteren Rand. Ich kompiliere und starte Java-Programm. Jetzt weiß ich nicht, wie ich das Fenster verlassen soll (während ich es laufen lasse). Der Bash-Cursor (oder was auch immer) reagiert nicht, da das Java-Programm noch ausgeführt wird. Meine bisherige Lösung besteht darin, das Terminal-Programm vollständig zu beenden und erneut zu öffnen. Irgendwelche Ideen, wie man das tmux-Fenster verlässt, ohne das gesamte Terminal-Programm zu verlassen?

seteropere
quelle
2
man tmux | less -p detach
Jasonwryan

Antworten:

146

Trennen Sie sich von der aktuell angehängten Sitzung

Session

Ctrl+ b doder Ctrl+b :detach

Bildschirm

Ctrl+ a Ctrl+ doder Ctrl+a :detach

Ruban Savvy
quelle
Sie müssen dann ausgeführt werden tmux attach, um die geöffnete Sitzung nach dem erneuten Herstellen der Verbindung erneut zu öffnen.
Besi
1
Ich habe es immer getan. ENTER ~ .Das scheint schöner zu sein.
Thomas Eding
8

Die bisherigen Antworten sind meines Erachtens unvollständig. Das :detachheißt, die Ansichtsfenster, in denen die tmux-Aktivität angezeigt wird, werden geschlossen. Tmux selbst läuft jedoch immer noch im Hintergrund, wie Sie sehen können, wenn Sie Folgendes ausführen ps:

myuser 1799 0.0 0.0 2500052 4632 ?? Ss 21Feb16 0:48.39 tmux new-session -s Dev

Selbst wenn Sie das Terminal verlassen und erneut starten, laufen alle tmux-Prozesse IMMER IM HINTERGRUND.

Um den tmux-Prozess selbst zu beenden, müssen Sie Folgendes tun:

tmux kill-session [-t session_name]

oder einfach:

kill -9 1799

JESii
quelle
5
Imho, es wäre sinnvoller, die Mängel einiger Antworten unter dieser bestimmten Antwort zu kommentieren und Ihren Beitrag als vollständige und in sich geschlossene Antwort zu hinterlassen, ohne dass der Leser herausfinden muss, welche Antworten vorhergegangen sind, und diese dann analysieren muss.
Techraf
2
Ich denke, OP wollte speziell, dass der Hintergrundprozess (in seinem Fall Java) weiterläuft, also wäre es kontraproduktiv, ihn zu beenden. Interessanter wäre es, später den abgetrennten Prozess mit wieder anzuhängen tmux attach-session.
ThomasH
Verwenden kill -9ist absolut die falsche Methode, um dies zu tun. Dies sendet ein SIGKILLSignal, das es dem Prozess nicht ermöglicht, nach sich selbst aufzuräumen, was zu ernsthaften Problemen mit baumelnden Ressourcen führen kann. SIGKILLsollte nur verwendet werden, wenn ein Prozess bereits höflich gebeten wurde, über SIGTERModer auf ähnliche Weise zu bereinigen und herunterzufahren, und sich aus irgendeinem Grund weigert, dies zu tun; Selbst dann sollte man das Senden immer noch vermeiden, SIGKILLwenn sie können. Diese Antwort besagt (fälschlicherweise), dass dies eines der ersten Dinge sein sollte, die eine Person tun sollte, um einen Hintergrundprozess wie einen tmux-Server herunterzufahren.
Eestrada