Tmux使用

为什么需要它们?

在 SSH 远程连到 4090 服务器上跑训练。如果:

  • 关掉终端窗口
  • 网络断开
  • 笔记本合盖

默认情况下,正在跑的命令会被一起杀掉,训练就中断了。

nohup 和 tmux 都是用来 让程序在后台继续跑,即使断开 SSH 也不受影响。


nohup --- 最简单

no hang up = 「别因为挂断连接而退出」。

复制代码
nohup lerobot-train ... > outputs/train/dp_full_100k.log 2>&1 &

各部分含义:

|-------------|----------------------|
| 部分 | 含义 |
| nohup | 忽略「挂断信号」,SSH 断了训练继续跑 |
| > xxx.log | 把输出写到日志文件 |
| 2>&1 | 错误信息也写进同一个 log |
| & | 放到后台,终端还能继续输入别的命令 |

查看是否在跑:

复制代码
ps aux | grep lerobot-train

看训练进度:

复制代码
tail -f outputs/train/dp_full_100k.log

(Ctrl+C 只是退出「看日志」,不会停训练)

缺点: 不能随时回到「那个训练窗口」交互,只能看 log。


tmux --- 更灵活(推荐长期用)

tmux 是一个 终端复用器:在服务器上开「虚拟终端会话」,可以断开再连回来,像没离开过一样。

基本用法

复制代码
# 1. 新建一个叫 train 的会话
tmux new -s train

# 2. 在这个会话里正常跑训练(不用 nohup)
conda activate lerobot
cd ~/lerobot
lerobot-train ... 2>&1 | tee outputs/train/dp_full_100k.log

# 3. 暂时离开(训练继续跑):按 Ctrl+B,松开后按 D
#    屏幕底部会显示 [detached]

# 4. SSH 断开、关电脑,都没关系

# 5. 下次连上服务器,恢复会话
tmux attach -t train
# 又能看到训练进度条了

常用命令

|------------------------------|---------------------|
| 命令 | 作用 |
| tmux new -s train | 新建名为 train 的会话 |
| tmux ls | 列出所有会话 |
| tmux attach -t train | 重新连上 train 会话 |
| Ctrl+B 然后 D | 离开会话(detach),程序继续跑 |
| tmux kill-session -t train | 删掉 train 会话(训练也会被停) |


怎么选?

|-----------|---------------|
| 场景 | 建议 |
| 第一次、图省事 | nohup ... & |
| 想随时回去看进度条 | tmux |


两条示例可直接复制的命令

方案 A:nohup(最简单)

复制代码
conda activate lerobot
cd ~/lerobot

nohup lerobot-train \
  --dataset.repo_id=feng0724821/so101_test_record \
  --policy.type=diffusion \
  --output_dir=outputs/train/dp_full_100k \
  --job_name=dp_full_100k \
  --policy.device=cuda \
  --batch_size=8 \
  --steps=100000 \
  --log_freq=100 \
  --save_freq=10000 \
  --policy.scheduler_warmup_steps=500 \
  --policy.num_train_timesteps=100 \
  --policy.num_inference_steps=10 \
  --num_workers=4 \
  --eval_steps=1000 \
  --wandb.enable=true \
  --wandb.project=so101-dp \
  --policy.push_to_hub=false \
  > outputs/train/dp_full_100k.log 2>&1 &

echo "训练已在后台启动,查看日志: tail -f outputs/train/dp_full_100k.log"

方案 B:tmux(可随时回去看)

复制代码
tmux new -s train
# 进入 tmux 后执行:
conda activate lerobot
cd ~/lerobot
lerobot-train \
  --dataset.repo_id=feng0724821/so101_test_record \
  ...(同上参数)... \
  2>&1 | tee outputs/train/dp_full_100k.log
# 想离开:Ctrl+B 然后 D
# 想回来:tmux attach -t train

如果服务器上还没有 tmux,可以试 tmux -V;没有的话需要管理员装(sudo apt install tmux)

相关推荐
Chen—LSN19 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表
anew___19 小时前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法
LBL122019 小时前
内网容器部署FTP日志监控服务
运维·服务器·容器
Chen—LSN19 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
程序员yu20 小时前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
Allen_LVyingbo21 小时前
信息化部门在AI时代的编程转移路径分析(上)
人工智能·python·算法·健康医疗·数据库开发·时序数据库·数据库架构
七牛云行业应用21 小时前
Jev 报 401 / api_key_required 怎么解决:TypeSafe AI 官方错误码表与排查步骤
算法·github
晴天的雨.99221 小时前
【C++算法】三数之和
开发语言·c++·算法
sunshine22 girl21 小时前
git tag-项目流程
git
多多爱学习1 天前
括号有几层?得看还有多少个左括号没闭合
c语言·c++·算法·面试