目 录CONTENT

文章目录

Linux 后台运行服务

~梓
2026-05-20 / 0 评论 / 0 点赞 / 4 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Linux 后台运行服务完全指南

一、问题背景

在 Linux 服务器上通过 SSH(如 MobaXterm)运行服务时,一旦关闭终端窗口,启动的服务进程也会随之终止。本文档介绍如何让 uvicorn(FastAPI)和 npm run dev(Vue)在 SSH 断开后继续在后台运行。


二、场景说明

服务 启动命令 端口
FastAPI 后端 uvicorn main:app --reload --host 0.0.0.0 --port 8080 8080
Vue 前端 npm run dev 通常 5173 或 3000

三、解决方案对比

方案 难度 能否恢复查看日志 开机自启 推荐场景
tmux ★☆☆ ✅ 可以 开发调试(最推荐)
nohup ★☆☆ ❌ 只能看文件 快速临时测试
& + disown ★☆☆ ❌ 只能看文件 快速临时测试
systemd ★★★ ✅ journalctl 生产部署

四、方案一:tmux(推荐)

4.1 安装 tmux

# Ubuntu/Debian
sudo apt update
sudo apt install tmux -y

# CentOS/RHEL
sudo yum install tmux -y

4.2 启动后端服务

# 创建名为 backend 的会话
tmux new -s backend

# 进入后端项目目录
cd /path/to/your/backend

# 启动 FastAPI
uvicorn main:app --reload --host 0.0.0.0 --port 8080

# 脱离会话(保持运行):按 Ctrl+B,松开,再按 D

4.3 启动前端服务

# 创建名为 frontend 的会话
tmux new -s frontend

# 进入前端项目目录
cd /path/to/your/frontend

# 启动 Vue
npm run dev

# 脱离会话(保持运行):按 Ctrl+B,松开,再按 D

4.4 常用 tmux 命令

操作 命令
创建新会话 tmux new -s 会话名
脱离会话 Ctrl+BD
查看所有会话 tmux ls
重新进入会话 tmux attach -t 会话名
关闭会话 tmux kill-session -t 会话名
在会话内查看帮助 Ctrl+B?

4.5 效果说明

关闭 MobaXterm 后,两个服务持续运行。重新连接后执行 tmux attach -t backend 即可回到后端终端,实时查看日志输出。


五、方案二:nohup

5.1 启动后端

cd /path/to/your/backend
nohup uvicorn main:app --reload --host 0.0.0.0 --port 8080 > backend.log 2>&1 &

5.2 启动前端

cd /path/to/your/frontend
nohup npm run dev > frontend.log 2>&1 &

5.3 查看日志

tail -f backend.log
tail -f frontend.log

5.4 关闭进程

# 查看进程
ps aux | grep uvicorn
ps aux | grep node

# 结束进程
kill <PID>

六、方案三:& + disown

6.1 启动后端

cd /path/to/your/backend
uvicorn main:app --reload --host 0.0.0.0 --port 8080 > backend.log 2>&1 &
disown

6.2 启动前端

cd /path/to/your/frontend
npm run dev > frontend.log 2>&1 &
disown

七、注意事项

7.1 端口占用问题

如果提示端口已被占用,查看并结束占用进程:

# 查看端口占用
lsof -i :8080
netstat -tlnp | grep 8080

# 结束进程
kill -9 <PID>

7.2 --reload 模式说明

  • --reload 用于开发环境,代码改动后自动重启
  • 生产环境建议移除 --reload,改用 systemdgunicorn

7.3 防火墙配置

如需外网访问,确保防火墙放行对应端口:

# Ubuntu (ufw)
sudo ufw allow 8080
sudo ufw allow 5173

# CentOS (firewalld)
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

八、快速参考卡片

最常用 tmux 操作

tmux new -s backend          # 创建会话
Ctrl+B → D                   # 脱离会话
tmux attach -t backend       # 恢复会话
tmux ls                      # 列出会话
tmux kill-session -t backend # 删除会话

最常用 nohup 命令

nohup uvicorn main:app --host 0.0.0.0 --port 8080 > app.log 2>&1 &
tail -f app.log

九、总结建议

使用场景 推荐方案
开发调试,需要实时看日志 tmux
快速测试,不需要再看输出 nohup
生产环境部署 systemd + Nginx
0

评论区