zamknij okno tmux bez wychodzenia z programu terminalowego

80

OK, jestem nowy w tym. Zainstalowałem, tmuxaby przeprowadzić kilkudniowy eksperyment. Po wpisaniu tmux new -s namemam nowe okno z zielonym sztandarem na dole. Kompiluję i uruchamiam program Java. Teraz nie wiem, jak wyjść z okna (pozostawiając je uruchomione). Kursor bash (lub cokolwiek) nie odpowiada, ponieważ program Java nadal działa. Moim dotychczasowym rozwiązaniem jest całkowite zamknięcie programu Terminal i ponowne jego otwarcie. Jakieś pomysły na wyjście z okna tmux bez wychodzenia z całego programu Terminal?

seteropere
źródło
2
man tmux | less -p detach
jasonwryan

Odpowiedzi:

145

Odłącz od aktualnie dołączonej sesji

Sesja

Ctrl+ b dlub Ctrl+b :detach

Ekran

Ctrl+ a Ctrl+ dlub Ctrl+a :detach

Ruban Savvy
źródło
Następnie musisz uruchomić, tmux attachaby ponownie wejść do otwartej sesji po ponownym połączeniu.
Besi
1
Zawsze tak robiłem. ENTER ~ .Wydaje się to ładniejsze.
Thomas Eding
8

Wierzę, że poprzednie odpowiedzi są niekompletne. Co :detachto jest zamknięcie rzutni wyświetlających aktywność tmux. Jednak sam tmux nadal działa w tle, co widać po uruchomieniu ps:

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

W rzeczywistości, nawet jeśli zamkniesz terminal i uruchomisz go ponownie, wszelkie procesy tmux Wciąż działają w tle.

Aby faktycznie zabić sam proces tmux, musisz:

tmux kill-session [-t session_name]

lub po prostu:

kill -9 1799

JESii
źródło
5
Imho, bardziej sensowne byłoby komentowanie braków niektórych odpowiedzi w ramach tej konkretnej odpowiedzi i pozostawienie postu jako kompletnej i ograniczonej odpowiedzi bez wymagania od czytelników, aby dowiedzieć się, które odpowiedzi były poprzednie, a następnie ich analizy.
techraf
2
Myślę, że OP chciał, aby proces działający w tle (w jego przypadku był to Java), więc zabicie go przyniosłoby efekt przeciwny do zamierzonego. Bardziej interesujące byłoby ponowne dołączenie później do odłączonego procesu za pomocą tmux attach-session.
ThomasH
Używanie kill -9jest absolutnie niewłaściwym sposobem (tm), aby to zrobić. To wysyła SIGKILLsygnał, który nie pozwoli na sam proces czyszczenia, co może powodować poważne problemy z wiszącymi zasobami. SIGKILLpowinien być stosowany tylko wtedy, gdy proces został już uprzejmie poproszony o oczyszczenie i zamknięcie za pośrednictwem SIGTERMlub w podobny sposób, i z jakiegokolwiek powodu odmawia; nawet wtedy należy nadal unikać wysyłania, SIGKILLjeśli mogą. Ta odpowiedź wnioskuje (niepoprawnie), że powinna to być jedna z pierwszych rzeczy, które osoba powinna zrobić, aby zamknąć proces w tle, taki jak serwer tmux.
eestrada