如何让你的前端服务在服务器上nohub运行

一般地,我们最习惯用 npm run dev 运行一个程序,但是我们需要在关闭窗口后它依然继续运行。这通常被称为"后台运行"或"守护进程化"。这里有几种主流且可靠的方法,你可以根据自己的需求选择:

⚙️ 方法一:使用 nohup 命令 (简单直接)

nohup 是"no hang up"的缩写,它的作用就是让进程忽略终端关闭信号,从而在后台持续运行。

  1. 进入项目目录 :确保当前路径是你的 package.json 文件所在的目录

  2. 执行命令

    • 不保存日志 (推荐):运行以下命令,所有输出会被丢弃,保持环境干净

      bash

      javascript 复制代码
      nohup npm run dev >/dev/null 2>&1 &
    • 保存日志 :如果想留下运行记录以便日后排查问题,可以将输出重定向到文件

      bash

      c 复制代码
      nohup npm run dev > my.log 2>my.log &
  3. 正确退出终端这是关键一步 。执行完上述命令后,不要直接点击关闭窗口的"X" 。必须先输入 exit 命令来退出终端会话,这样才能确保 nohup 进程被正确剥离并独立运行

    bash

    bash 复制代码
    exit

🛠️ 方法二:使用专业进程管理工具 pm2 (功能强大)

pm2 是 Node.js 生态中最流行的进程管理工具,特别适合在生产环境中使用。它提供了进程守护、自动重启、日志管理等一系列强大功能。

  1. 全局安装 pm2

    bash

    css 复制代码
    npm install pm2@latest -g
  2. 启动项目:在项目根目录下运行:

    bash

    sql 复制代码
    pm2 start npm -- run dev

    你也可以为这个进程命名,方便管理:

    bash

    arduino 复制代码
    pm2 start npm --name "my-vue-app" -- run dev
  3. 常用管理命令

    • 查看所有进程状态:pm2 list
    • 停止应用:pm2 stop my-vue-app
    • 重启应用:pm2 restart my-vue-app
    • 删除应用:pm2 delete my-vue-app
    • 查看日志:pm2 logs my-vue-app

🖥️ 方法三:使用终端复用工具 screentmux (灵活方便)

如果你更喜欢在同一个窗口管理多个会话,screentmux 是很好的选择。它们可以创建独立的虚拟终端,即使断开连接,里面的进程也不会停止。

  1. 创建一个新的 screen 会话

    bash

    perl 复制代码
    screen -S my-vue-dev
  2. 在新建的会话窗口中运行项目

    bash

    arduino 复制代码
    npm run dev
  3. 分离会话 :按下键盘快捷键 Ctrl + A,然后按 D。这样你就会回到主终端,而 npm run dev 会在后台的 screen 会话中继续运行。

  4. 重新连接会话:当你想回来查看时,使用以下命令即可恢复:

    bash

    perl 复制代码
    screen -r my-vue-dev

🧰 方法四:使用专用工具 devctl (轻量级)

devctl 是一个专门为 npm run dev 这类开发命令设计的轻量级后台管理工具

  1. 全局安装

    bash

    复制代码
    npm install -g devctl
  2. 基本使用

    • 在后台启动服务:devctl start
    • 查看服务状态:devctl status
    • 查看实时日志:devctl logs
    • 停止服务:devctl stop

💡 简单对比与提示

  • 快速测试 :如果只是想临时释放终端,可以在命令后加一个 & 将其放到后台,例如 npm run dev &。但这个方法在关闭终端时进程依然可能被终止,不如 nohup 可靠。

  • ⚠️ 重要提示 :在Linux/macOS系统下使用 nohup 时,执行完启动命令后,务必使用 exit 命令退出终端 ,而不是直接关闭窗口,这样才能确保进程持续运行

  • 适用场景建议

    • 本地开发临时用nohup& 就足够了。
    • 服务器长期运行 :推荐使用 pm2,它更专业、功能更全。
    • 需要多任务管理screentmux 是不错的选择。
相关推荐
CCYe、5 分钟前
限流与配额:企业AI网关的工程实践
前端·人工智能
看谷秀12 分钟前
arkts- 6 手势/沉浸式/深浅色/性能/组件补充/访问/js交互/通知/Native交互
前端·arkts
划船不慎掉水顺便摸鱼15 分钟前
TipTap 不是编辑器,是编辑器构造器:ProseMirror 模型驱动的富文本架构
前端
小高00721 分钟前
🔥🔥🔥TypeScript 7 正式版来了:别只看 10 倍速度,这 4 个迁移坑更值得注意
前端·javascript·面试
凉茶社25 分钟前
shadcn/ui 默认改用 Base UI,Radix 被放弃了吗?
前端
Vuji26 分钟前
ReAct 与 Plan-Execute:两种 Agent 范式的实战对比
前端·agent
用户615958680002228 分钟前
从零原生搭建一个微前端简易框架
前端
小月土星29 分钟前
React + TypeScript 企业级开发实战:从类型约束到组件设计
前端
沙洲36 分钟前
Vite 环境变量终极指南:从原理到企业级实战
前端
刘婉晴43 分钟前
【Web漏洞】SQL 注入实战技巧
前端·数据库·sql