如何优雅的利用tmux和ssh访问远程服务器

使用 tmuxssh 访问远程服务器可以极大地提升工作效率,特别是当你需要在远程服务器上进行长时间或复杂的任务时。tmux 允许你创建多个窗口和面板,在断开连接后仍然保持程序运行,并且可以随时重新连接回去。这里是如何优雅地结合使用 tmuxssh 的步骤:

1. 在本地机器上启动 tmux 会话

首先,在本地机器上打开终端并启动一个 tmux 会话。如果你是 tmux 的新手,你可以简单地通过输入 tmux 命令来启动一个新的会话。

tmux

或者,你可以为你的会话命名,以便于记忆和管理:

tmux new -s mysession

2. 通过 SSH 连接到远程服务器

tmux 会话中,使用 ssh 命令连接到你的远程服务器。你需要替换下面的 usernameremote_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 pCtrl+b n)等等。

5. 断开与远程服务器的连接

当你需要暂时离开时,你可以从远程服务器的 tmux 会话中断开(但不是退出 tmux),通过按下 Ctrl+b 然后按 d。这将会把你带回到你本地的 tmux 会话或者普通的终端界面,而远程 tmux 会话将在后台继续运行。

6. 重新连接到远程服务器

当你回到工作并希望重新连接到你的远程 tmux 会话时,只需再次通过 ssh 连接到远程服务器,然后使用 tmux attach 命令重新连接到你的 tmux 会话。

优点

这种方法的优点包括:

  • 持久性:即使你的本地机器与远程服务器之间的连接断开,你的程序和任务仍然可以在远程服务器上的 tmux 会话中运行。
  • 灵活性:你可以在一个 tmux 会话中管理多个窗口和面板,使得在远程服务器上的工作更加高效。
  • 便捷性:随时可以断开和重新连接到会话,而不会丢失当前的工作状态。

记住,tmux 的学习曲线可能稍微有点陡峭,但一旦你习惯了它的键盘快捷键和命令,它将成为你日常工作中不可或缺的工具。

tmux恢复上一次连接

在使用 tmux 时,如果你想恢复上一次的会话,可以使用以下方法:

  1. 列出所有会话: 首先,你需要知道当前所有活动的 tmux 会话。可以使用以下命令来列出所有会话:

    tmux ls
    
  2. 依附到会话: 一旦你知道了会话的名称,就可以使用 attach 命令加上会话名称来依附到特定的会话。如果你忘记了会话名称,可以依附到最近的会话:

    tmux attach
    

    或者,如果你知道会话名称或编号,可以使用:

    tmux attach-session -t [session-name or number]
    

    例如,如果你的会话名称是 my_session,你可以使用:

    tmux attach -t my_session
    
  3. 没有会话名称时的快速依附: 如果你通常只运行一个 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,从而终止该会话。下面是如何操作的步骤:

  1. 首先,列出所有会话:这样你可以找到你想要删除的会话的名称或ID。

    tmux ls
    

    这个命令会列出所有当前活动的 tmux 会话,包括它们的名称和编号。

  2. 使用 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

记得在执行任何删除操作之前确认是否有未保存的工作,以避免数据丢失。

你可能感兴趣的:(ssh,服务器,github)