Tmux使用

为什么需要它们?

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

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

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

nohuptmux 都是用来 让程序在后台继续跑,即使断开 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

相关推荐
captain376几秒前
网络初 识
运维·服务器·网络
kyle~9 分钟前
Linux --- epoll (I/O就绪事件通知机制)
linux·运维·服务器
z落落3 小时前
C# WinForm Socket 转串口设备服务器+Modbus CRC16校验+Socket 客户端
服务器·开发语言·c#
y小川3 小时前
【git】移除远端已删除的git分支
git
政企项目老覃11 小时前
大模型幻觉治理与自动评测:金融风控场景的落地实践
人工智能·算法·机器学习
淡海水11 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
hansang_IR11 小时前
【题解】[APIO2023] 赛博乐园 / cyberland
c++·算法·图论
洛阳纸贵12 小时前
MATLAB-matlab基础知识
学习·算法·matlab
落羽的落羽12 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法