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)

相关推荐
悠仁さん5 小时前
【C++】哈希表
c++·算法·散列表
地平线开发者6 小时前
点云算法整理与常用计算模块:从数据到模型,再到工程与量化
算法·自动驾驶
Android系统攻城狮6 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
武子康8 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
江屿风8 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
程序员沉梦听雨8 小时前
【Git】fork工作流与上游同步
git
雪落漂泊8 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
秋天的怀念_David9 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
wdeok10 小时前
Socket编程Tcp
服务器·网络·tcp
千舟软件11 小时前
报修系统对接企业微信和钉钉的3种方式_千舟报修云
服务器·钉钉·企业微信