如何让你的前端服务在服务器上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

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

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

  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,它更专业、功能更全。
    • 需要多任务管理 :screen 或 tmux 是不错的选择。
相关推荐
福兮说10 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理10 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆66611 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)11 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan12 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_13 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒13 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技13 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu14 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
默_笙14 小时前
🛴 从散件到整机:DeepAgents 与 Agent 身上预留的那些"插槽"(前置介绍)
前端·javascript