如何优雅的利用tmux和ssh访问远程服务器
使用 tmux
与 ssh
访问远程服务器可以极大地提升工作效率,特别是当你需要在远程服务器上进行长时间或复杂的任务时。tmux
允许你创建多个窗口和面板,在断开连接后仍然保持程序运行,并且可以随时重新连接回去。这里是如何优雅地结合使用 tmux
和 ssh
的步骤:
1. 在本地机器上启动 tmux 会话
首先,在本地机器上打开终端并启动一个 tmux
会话。如果你是 tmux
的新手,你可以简单地通过输入 tmux
命令来启动一个新的会话。
tmux
或者,你可以为你的会话命名,以便于记忆和管理:
tmux new -s mysession
2. 通过 SSH 连接到远程服务器
在 tmux
会话中,使用 ssh
命令连接到你的远程服务器。你需要替换下面的 username
和 remote_public_ip
为实际的用户名和服务器IP地址。
ssh username@remote_public_ip
3. 使用 tmux 管理远程会话
一旦连接到远程服务器,你可以在服务器上启动另一个 tmux
会话,这样即使你的 SSH 连接断开,你的工作也可以在后台继续运行。
tmux
或者连接到已存在的 tmux
会话:
tmux attach
4. 在远程服务器上使用 tmux
现在你可以在远程服务器上使用 tmux
的所有功能了,比如创建新窗口(Ctrl+b c
),分割窗口(Ctrl+b %
或 Ctrl+b "
),在窗口间切换(Ctrl+b p
或 Ctrl+b n
)等等。
5. 断开与远程服务器的连接
当你需要暂时离开时,你可以从远程服务器的 tmux
会话中断开(但不是退出 tmux
),通过按下 Ctrl+b
然后按 d
。这将会把你带回到你本地的 tmux
会话或者普通的终端界面,而远程 tmux
会话将在后台继续运行。
6. 重新连接到远程服务器
当你回到工作并希望重新连接到你的远程 tmux
会话时,只需再次通过 ssh
连接到远程服务器,然后使用 tmux attach
命令重新连接到你的 tmux
会话。
优点
这种方法的优点包括:
- 持久性:即使你的本地机器与远程服务器之间的连接断开,你的程序和任务仍然可以在远程服务器上的
tmux
会话中运行。 - 灵活性:你可以在一个
tmux
会话中管理多个窗口和面板,使得在远程服务器上的工作更加高效。 - 便捷性:随时可以断开和重新连接到会话,而不会丢失当前的工作状态。
记住,tmux
的学习曲线可能稍微有点陡峭,但一旦你习惯了它的键盘快捷键和命令,它将成为你日常工作中不可或缺的工具。
tmux恢复上一次连接
在使用 tmux
时,如果你想恢复上一次的会话,可以使用以下方法:
-
列出所有会话: 首先,你需要知道当前所有活动的
tmux
会话。可以使用以下命令来列出所有会话:tmux ls
-
依附到会话: 一旦你知道了会话的名称,就可以使用
attach
命令加上会话名称来依附到特定的会话。如果你忘记了会话名称,可以依附到最近的会话:tmux attach
或者,如果你知道会话名称或编号,可以使用:
tmux attach-session -t [session-name or number]
例如,如果你的会话名称是
my_session
,你可以使用:tmux attach -t my_session
-
没有会话名称时的快速依附: 如果你通常只运行一个
tmux
会话,或者只想快速返回到最近使用的会话,可以省略-t
选项和会话名称:tmux a
这是
tmux attach
的简写形式,tmux
会自动选择最后一个会话。
关于你提到的“sessions should be nested with care, unset $TMUX to force”,这是一个关于嵌套 tmux
会话的警告。默认情况下,tmux
不允许你在一个 tmux
会话内启动另一个 tmux
会话(即嵌套会话),因为这可能会导致操作混乱和预期之外的行为。如果你确实需要在 tmux
会话内启动另一个 tmux
会话,可以通过在内部会话中临时取消设置 TMUX
环境变量来实现:
unset TMUX
然后,你就可以在已经连接的 tmux
会话内启动一个新的 tmux
会话。但请注意,这样做需要谨慎,因为嵌套 tmux
会话可能会使快捷键和会话管理变得复杂。
tmux删除某个连接
要删除(或结束)某个 tmux
会话,你可以使用 kill-session
命令。这个命令允许你指定要结束的会话名称或ID,从而终止该会话。下面是如何操作的步骤:
-
首先,列出所有会话:这样你可以找到你想要删除的会话的名称或ID。
tmux ls
这个命令会列出所有当前活动的
tmux
会话,包括它们的名称和编号。 -
使用
kill-session
命令删除会话:一旦你知道了要删除的会话名称或ID,就可以使用以下命令结束它:tmux kill-session -t session-name
其中
session-name
是你想要结束的会话的名称。如果你知道会话ID,也可以使用ID来指定会话。例如,如果会话名称是my_session
,那么命令将是:tmux kill-session -t my_session
如果你想要结束的会话ID是
0
,命令将是:tmux kill-session -t 0
如果你想要结束所有 tmux
会话,可以使用 kill-server
命令。这将关闭 tmux
服务器及其所有会话。请注意,这样做会丢失所有会话中的未保存工作,因此请谨慎使用:
tmux kill-server
记得在执行任何删除操作之前确认是否有未保存的工作,以避免数据丢失。
原文地址:https://blog.csdn.net/qq_36372352/article/details/136046342
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!