выйдите из окна tmux, не выходя из программы Terminal


80

ОК, я новичок в этом. Я установил tmuxдля запуска эксперимента несколько дней. После набора tmux new -s nameя получил новое окно с зеленым баннером внизу. Я компилирую и запускаю Java-программу. Сейчас я не знаю, как выйти из окна (пока оно запущено). Курсор bash (или любой другой) не отвечает, потому что Java-программа все еще работает. Мое решение до сих пор состоит в том, чтобы полностью выйти из программы Terminal и снова открыть ее. Любые идеи о том, как выйти из окна tmux, не выходя из всей программы терминала?


2
man tmux | less -p detach
Джейсонвриан

Ответы:


147

Отключиться от текущего присоединенного сеанса

сессия

Ctrl+ b dили Ctrl+b :detach

экран

Ctrl+ a Ctrl+ dили Ctrl+a :detach


Затем вам нужно запустить, tmux attachчтобы снова войти в открытый сеанс после повторного подключения.
Беси

1
Я всегда делал ENTER ~ .это, кажется, лучше.
Томас Эдинг

8

Предыдущие ответы являются неполными, я считаю. Что :detachделает, так это закрывает области просмотра, которые отображают активность tmux. Однако сам tmux все еще работает в фоновом режиме, как вы можете увидеть, выполнив ps:

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

Фактически, даже если вы выйдете из терминала и запустите его снова, все процессы tmux по-прежнему будут работать в фоновом режиме.

Чтобы фактически убить сам процесс tmux, вы должны сделать:

tmux kill-session [-t session_name]

или просто:

kill -9 1799


5
Имхо, имело бы больше смысла комментировать недостатки некоторых ответов по этому конкретному ответу и оставлять свой пост в виде полного и содержательного ответа, не требуя от читателей выяснить, какие ответы были предыдущими, а затем проанализировать их.
techraf

2
Я думаю, что OP специально хотел, чтобы фоновый процесс (в его случае - java) продолжался, поэтому его уничтожение было бы контрпродуктивным. Более интересным было бы повторно присоединиться позже к отдельному процессу с tmux attach-session.
ThomasH

Использование kill -9абсолютно неправильный путь (тм), чтобы сделать это. Это посылает SIGKILLсигнал, который не позволит процессу очиститься после себя, что может вызвать серьезные проблемы с висящими ресурсами. SIGKILLследует использовать только в том случае, если процесс уже вежливо попросили очистить и закрыть с помощью SIGTERMили аналогичным образом и по какой-либо причине отказывается это сделать; даже тогда следует избегать отправки, SIGKILLесли они могут. Этот ответ выводит (неправильно), что это должно быть одним из первых действий, которые человек должен сделать, чтобы завершить фоновый процесс, такой как сервер tmux.
Эстрада
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.