tmux
来运行几天的实验。输入tmux new -s name
后,我在底部打开了一个带有绿色横幅的新窗口。我编译并运行Java程序。现在,我不知道如何退出窗口(同时保持运行状态)。由于Java程序仍在运行,因此bash(或其他)游标没有响应。到目前为止,我的解决方案是完全退出Terminal程序,然后再次将其重新打开。关于如何在不退出整个终端程序的情况下退出tmux窗口的任何想法? #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
评论
男人tmux | less -p分离对于更多的交互方式,您可以执行Ctrl + b,它将列出会话,导航到要杀死的会话,然后键入:kill-session。