如何让你的前端服务在服务器上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 是不错的选择。
相关推荐
人民广场吃泡面14 小时前
前端该重视的编程思想
前端
冬夜戏雪14 小时前
agent的trace 和eval
开发语言·前端·javascript
IT_陈寒14 小时前
Redis的DEL命令居然没删干净数据?这个坑我爬了半天
前端·人工智能·后端
kyriewen14 小时前
面试官让我现场用 AI 改一个真实 bug——他打断我的 3 个理由
前端·面试·ai编程
计算机魔术师15 小时前
斯坦福研究:AI 对入门级岗位冲击最大
前端
Simon_He16 小时前
一个渲染内核,五个框架包:我的流式 Markdown 渲染库是怎么长成“全家桶”的
前端·vue.js·markdown
小满zs16 小时前
关于HBuilderX+ 微信小程序开发工具启动的问题
前端·uni-app
林深见鹿_海蓝见鲸16 小时前
微信小程序反编译完整教程(Windows 新手版)
前端
默_笙16 小时前
😋 我让爬虫终于看到了我的网站,后端同事说"这也行?"(上):SEO 与渲染模式
前端·javascript
feixing_fx17 小时前
告别枯燥字体:Web 字体加载策略与 font-display 最佳实践
前端·css·前端框架·交互·css3