tmux长时间运行命令

现在我有一个这样的使用场景:在远程服务器通过 VSCode 来编辑代码,然后需要长时间训练/数据处理。为了确保退出 VSCode 后这个处理进程能继续,通常需要使用 tmux 来管理。这里总结一下常用命令。

创建会话

创建一个新会话(建议命名):

1
tmux new -s msmetrics

在里面直接运行你的任务:

1
uv run data/prepare_msmetrics_dataset.py ... | tee run.log

退出但不终止任务(detach):

1
Ctrl + B,然后按 D

重新连接:

1
tmux attach -t msmetrics

结束会话(任务结束后):

1
exit

会话管理(多实验并行的关键)

查看所有 session:

1
tmux ls

输出类似:

1
2
3
msmetrics: 1 windows
dafpred: 1 windows
informer: 1 windows

连接某个 session:

1
tmux attach -t dafpred

强制接管(比如之前断线没正常 detach):

1
tmux attach -d -t dafpred

删除某个 session:

1
tmux kill-session -t dafpred

窗口(window)管理(一个 session 多任务)

一个 session 可以开多个“窗口”(类似 tab)。

创建新窗口:

1
Ctrl + B,然后按 C

切换窗口:

1
2
Ctrl + B,然后按 N   # 下一个
Ctrl + B,然后按 P   # 上一个

查看窗口列表:

1
Ctrl + B,然后按 W

关闭当前窗口:

1
exit

面板(pane)分屏(实用)

当需要:

  • 一边跑训练
  • 一边看日志 / nvidia-smi / htop

就用 pane。

水平分屏:

1
Ctrl + B,然后按 "

垂直分屏:

1
Ctrl + B,然后按 %

切换 pane:

1
Ctrl + B,然后方向键

关闭 pane:

1
exit

滚动查看输出

默认鼠标滚轮是不能滚 tmux 的,需要:

进入滚动模式:

1
Ctrl + B,然后按 [

然后:

  • ↑ ↓ 滚动
  • PgUp / PgDn
  • q 退出

如果你经常看日志,这个比 tail -f 更直接。


复制粘贴

进入复制模式:

1
Ctrl + B,然后按 [

开始选择:

1
空格

复制:

1
Enter

粘贴:

1
Ctrl + B,然后按 ]
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计