如何让你的前端服务在服务器上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 是不错的选择。
相关推荐
颜进强1 小时前
Claude Code - 18 从 Figma 到 React:一套让 AI 生成代码"不瞎编"的实战工作流
前端·后端·ai编程
李伟_Li慢慢2 小时前
12-mini版WebGLObjects
前端·three.js
李伟_Li慢慢2 小时前
17-mini版WebGLBufferRenderer
前端·three.js
李伟_Li慢慢2 小时前
16-mini版WebGLBackground
前端·three.js
李伟_Li慢慢2 小时前
13-mini版WebGLProgram
前端·three.js
李伟_Li慢慢2 小时前
14-mini版WebGLPrograms
前端·three.js
李伟_Li慢慢2 小时前
19-mini版WebGLRenderer
前端·three.js
李伟_Li慢慢2 小时前
10-mini版bindingStates
前端·three.js