日常开发中难免会遇到需要连接远程服务器的情况,各种可视化工具层出不穷,Docker开发更是成为了大多数企业的主流。那你还记得 Tmux 吗?
长情的我还是喜欢古法编程。
Tmux 解决了什么问题?
正常情况:
你本地电脑 → ssh → 远程机器 → 启动服务
问题是:
- SSH 一断
- 远程 shell session 被销毁
- 子进程(你的服务)也被 kill
用 Tmux 后:你本地 → ssh → tmux session(常驻) → 你的服务
- SSH 断了 ❌ 不影响 tmux
- tmux 还在 ✅
- 你的服务也还在 ✅
TMUX 的基本使用
1️⃣ 创建一个会话
tmux new -s myapp
2️⃣ 在里面启动你的服务
npm run dev
# 或 node app.js
3️⃣ 断开
Ctrl + b,然后按 d
这一步不是退出,是“后台挂起”。
4️⃣ 下次重新连接
tmux attach -t myapp
你会发现:
👉 进程还在跑
👉 日志还在滚
Share 一下我常用的 Tmux + Node 多服务开发方案
✅ 断开 SSH 不影响
✅ 多服务一键启动
✅ 日志/调试清晰
✅ 重连后一秒恢复现场
Tmux 推荐配置
编辑:
~/.tmux.conf
# 改 prefix
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 开启鼠标
set -g mouse on
# 分屏快捷键
bind | split-window -h
bind - split-window -v
# 快速 reload 配置
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# 状态栏美化
set -g status-bg black
set -g status-fg green
应用:
tmux source-file ~/.tmux.conf
项目结构建议
project/
├── services/
│ ├── api/
│ ├── web/
│ └── worker/
├── logs/
├── scripts/
│ └── tmux-dev.sh
├── ecosystem.config.js # 可选(PM2)
└── package.json
Node 服务标准化
1️⃣ API(Express)
cd services/api
npm install express nodemon
{
"scripts": {
"dev": "nodemon app.js"
}
}
2️⃣ Web(比如 Vite / Next)
npm run dev
3️⃣ Worker(队列/任务)
{
"scripts": {
"dev": "nodemon worker.js"
}
}
核心:Tmux 一键启动脚本
scripts/tmux-dev.sh
#!/usr/bin/env bash
SESSION="dev"
# 如果 session 已存在,直接 attach
tmux has-session -t $SESSION 2>/dev/null
if [ $? -eq 0 ]; then
tmux attach -t $SESSION
exit 0
fi
# 创建 session
tmux new-session -d -s $SESSION
# === API ===
tmux rename-window -t $SESSION "api"
tmux send-keys -t $SESSION "cd services/api && npm run dev" C-m
# === WEB ===
tmux new-window -t $SESSION -n "web"
tmux send-keys -t $SESSION "cd services/web && npm run dev" C-m
# === WORKER ===
tmux new-window -t $SESSION -n "worker"
tmux send-keys -t $SESSION "cd services/worker && npm run dev" C-m
# === LOGS ===
tmux new-window -t $SESSION -n "logs"
tmux send-keys -t $SESSION "tail -f logs/*.log" C-m
# === MONITOR ===
tmux new-window -t $SESSION -n "monitor"
tmux send-keys -t $SESSION "htop" C-m
# 回到 API
tmux select-window -t $SESSION:0
# attach
tmux attach -t $SESSION
使用方式
chmod +x scripts/tmux-dev.sh
./scripts/tmux-dev.sh
开发流程
第一次
ssh server
./scripts/tmux-dev.sh
断开
Ctrl + a → d
再回来
ssh server
tmux attach -t dev
所有服务还在跑,日志还在滚