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

评论

男人tmux | less -p分离

对于更多的交互方式,您可以执行Ctrl + b,它将列出会话,导航到要杀死的会话,然后键入:kill-session。

#1 楼

从当前连接的会话中分离

会话

Ctrl + bd或Ctrl + b :detach

屏幕

Ctrl + a Ctrl + d或Ctrl + a :detach

评论


重新连接后,您需要运行tmux attach以再次进入打开的会话。

–贝西
19年2月27日在17:56

我一直都做ENTER〜。这似乎更好。

–托马斯·埃丁
19年6月24日在16:54

〜和之间是否有空格。并且它还返回拒绝权限:/ home / folder @ThomasEding

–警报
20-10-18在19:23

@alper我在上面键入的表达式中根本没有空格。

–托马斯·埃丁
20-10-22在21:21

#2 楼

我相信以前的答案是不完整的。 :detach的作用是关闭正在显示tmux活动的视口。但是,通过运行ps可以看到,tmux本身仍在后台运行:

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

评论


恕我直言,对特定答案下的某些不足之处发表评论,然后将您的帖子保留为完整且包含的答案,而不需要读者找出先前的答案然后再进行分析,就更有意义了。

– techraf
16 Mar 2 '16 at 14:59

我认为OP特别希望后台进程(在他的情况下为Java)继续运行,因此杀死它会适得其反。更有趣的是稍后使用tmux attach-session重新附加到分离的进程。

– ThomasH
18-3-27在15:46



使用kill -9绝对是错误的方法。这将发送SIGKILL信号,该信号将不允许进程自行清理,这可能会导致资源悬空的严重问题。仅当已经礼貌地要求通过SIGTERM或类似方法清理和关闭某个进程并且出于某种原因拒绝这样做时,才应使用SIGKILL。即使这样,如果可以的话,仍然应该避免发送SIGKILL。这个答案(错误地)推断这应该是一个人关闭诸如tmux服务器之类的后台进程时应该做的第一件事。

– esstrada
19年8月12日在23:47