在不退出终端程序的情况下退出 tmux 窗口

set*_*ere 113 terminal tmux

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

Rub*_*vvy 197

从当前附加的会话中分离

会议

Ctrl+b dCtrl+b :detach

屏幕

Ctrl+ a Ctrl+dCtrl+a :detach

  • 然后你需要运行`tmux attach` 重新连接后再次进入打开的会话。 (2认同)

JES*_*Sii 9

我相信以前的答案是不完整的。什么: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

  • 恕我直言,在该特定答案下评论某些答案的不足之处会更有意义,并将您的帖子作为完整且包含在内的答案,而无需读者找出先前的答案,然后对其进行分析。 (7认同)
  • 我认为 OP 特别希望后台进程(在他的例子中是 java)继续运行,所以杀死它会适得其反。更有趣的是稍后使用`tmux attach-session`重新附加到分离的进程。 (5认同)
  • 使用 `kill -9` 绝对是错误的方法(tm)。这会发送一个“SIGKILL”信号,该信号将不允许进程自行清理,这可能会导致悬空资源的严重问题。`SIGKILL` 应该只在一个进程已经被礼貌地通过 `SIGTERM` 或类似的方式被要求清理和关闭时使用,无论出于何种原因,拒绝这样做;即便如此,如果可以的话,仍然应该避免发送“SIGKILL”。这个答案推断(错误地)它应该是一个人应该做的第一件事来关闭像 tmux 服务器这样的后台进程。 (4认同)