tmux使用-解决ssh断开程序中断的问题

在远程服务器跑程序时,有时候会因为网络不好而会话中断,这时对应的程序也会中断。这个问题可以被tmux很好的解决。在远程服务器上安装tmux,可以实现即使会话中断,也能保证程序在后台正常的运行。下面实现简单上手tmux.

1.安装

mac可以使用homebrew安装:

brew install tmux

linux安装

sudo apt-get install tmux

有conda的虚拟环境也可以使用

conda install tmux

2.新建和退出

输入命令:tmux
这时会进入新建的tmux会话窗口,一般一开始默认。(左下角)
如果要退出tmux会话窗口,输入命令:exit.
建立特定名称的tTuX会话商口,输入命令:tmux new -s [新建会话名称]

3.查看、重命名、接入以及转换

在未进入tmux窗口的情况下,输入命令:tmux ls,可以看到全部的tmux会话
输入命令:tmux rename-session -t [原会话名称] [新会话名称],可以实现对tmux会话的重命名

输入命令:tmux attach -t [会话名称],可以进入已有的tmux会话

进入了tmux会话窗口之后,输入命令:tmux switch -t 会话名称,可以转入对应的tmux会话。

4.分离和终止

进入了tmux会话窗口之后,输入命令:tmux detach,会退出当前会话,但当前会话会在后台存在,会话里运行的程序也会相应转到后
台,(直接点击右上角x号关闭窗口貌似也可以实现同样效果)
未进入tmux窗口的情况下,输入命令:tmux kill-session -t [会话名称],实现强制终止会话,杀死tmux会话进程。

快捷键:

tmux的常用命令:

  1. 创建新会话:tmux new-session -s sessionname

  2. 列出会话列表:tmux list-sessions

  3. 返回到原会话:tmux attach-session -t sessionname

  4. 离开会话:在tmux会话中按下Ctrl+b,然后松开,再按下d

    【mac是Ctrl】

  5. 创建新窗口:在tmux会话中按下Ctrl+b,然后松开,再按下c

  6. 切换窗口:在tmux会话中按下CtrL+b,然后松开,再按下数字键,切换到对应编号的窗

  7. 水平分割窗口:在tmux会话中按下Ctrl+b,然后松开,再按下%

  8. 8.垂直分割窗口:在tmux会话中按下Ctrl+b,然后松开,再按下”

  9. 修改支持鼠标滚轮:Ctrl+b, 按: , 输入set -g mouse on

  10. 切换面板:在tmux会话中按下Ctrl+b,然后松开,再按下方向键进行切换

  11. 关闭会话:exit

ctrl + b 来激活快捷键,开启后可以使用一些特定按键来执行操作。

ctrl + b 来激活快捷键,开启后可以使用一些特定按键来执行操作。
分类 快捷键 功能
基础 ? 获取帮助信息
Session管理 s 列出所有会话
$ 重命名当前会话
d 断开当前会话
Window管理 c 创建一个新窗口
, 重命名当前窗口
w 列出所有窗口
% 水平分割窗口
垂直分割窗口
n 选择下一个窗口
p 选择上一个窗口
0~9 选择0~9对应的窗口
l 在前后两个窗口间切换
w 通过窗口列表切换窗口
f 在所有窗口中查找指定文本
Pane管理 % 创建水平窗格
创建一个垂直窗格
h 将光标移入下左侧窗格
j 将光标移入下下方窗格
l 将光标移入下右侧窗格
k 将光标移入下上方窗格
q 显示窗格编号
o 在窗格间切换
} 与下一个窗格交换位置
{ 与上一个窗格交换位置
! 在新窗口中显示当前窗格
x 关闭当前窗格
SPC 循环切换窗格布局
Alt + o 逆时针旋转窗格面板
Ctrl + o 顺时针旋转窗格面板
方向键 移动光标选择面板
其它 t 在当前窗格显示时间
z 最大化和最小化当前窗口

【from GPT4】

另外:

使用 tmux 是个不错的选择!这里有一个简单的步骤指南,帮助你通过 tmux 保持你的 abc.ipynb 笔记本在服务器上继续运行:

  1. 连接到你的服务器
    使用 SSH 或其他远程连接工具登录到你的服务器。

  2. 启动一个新的 tmux 会话
    在终端输入以下命令:

    1
    tmux new -s mysession

    这里 mysession 是你给会话命名的名称,你可以根据需要更改它。

  3. tmux 会话中启动 Jupyter Notebook
    确保你在启动 Jupyter Notebook 之前处于你笔记本文件的正确目录。然后运行:

    1
    jupyter notebook

    或者如果你需要通过特定端口访问,或者需要其他启动选项,可以添加相应的参数。

  4. 断开 tmux 会话
    当你启动了 Jupyter Notebook 并且确认一切正常运行后,你可以安全地断开 tmux 会话而不会终止运行中的程序。按下 Ctrl+B 然后立即按 D,这会将你从当前会话中分离出来并返回到普通的终端会话。

  5. 重新连接到 tmux 会话
    如果你需要回到你的 Jupyter Notebook 或查看输出,可以随时重新连接到你的 tmux 会话:

    1
    tmux attach -t mysession

    确保使用你之前命名的会话名称。

  6. 关闭 tmux 会话
    当你完成工作并不再需要保持笔记本运行时,可以关闭 tmux 会话。首先,重新连接到会话,然后可以直接在 tmux 里关闭 Jupyter Notebook,之后输入:

    1
    exit

    这会结束 tmux 会话并关闭所有相关的进程。

这样,你就可以确保即使在远程连接断开后,你的笔记本仍能继续运行。希望这能帮到你!如果有其他问题或需要进一步的帮助,请随时告诉我。