退出tmux窗口而不退出终端程序


80

好吧,我是新来的。我安装tmux运行了几天的实验。键入后,tmux new -s name我得到了一个新窗口,底部带有绿色横幅。我编译并运行Java程序。现在,我不知道如何退出窗口(同时保持运行状态)。由于Java程序仍在运行,因此bash(或其他)游标没有响应。到目前为止,我的解决方案是完全退出Terminal程序,然后再次将其重新打开。关于如何在不退出整个终端程序的情况下退出tmux窗口的任何想法?


2
man tmux | less -p detach
jasonwryan 2014年

Answers:


145

从当前附加的会话中分离

届会

Ctrl+ b dCtrl+b :detach

屏幕

Ctrl+ a Ctrl+ dCtrl+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服务器之类的后台进程时应该做的第一件事。
eestrada
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.