You need to enable JavaScript to run this app. 如何在后台运行程序?node.js应用如何无需保持终端开启运行
优惠活动
大模型
产品
解决方案
定价
更多

如何在后台运行程序?node.js应用如何无需保持终端开启运行

Node.js应用后台常驻运行实现方案

以下是不同场景下的可用方案:

1. 临时测试场景(无需额外安装工具,Linux/Unix适用)

  • 可以使用系统自带的nohup命令实现,原理是忽略终端挂断信号,避免进程随终端关闭被终止
  • 基础启动命令:nohup node 你的应用入口文件.js &,默认运行日志会输出到当前目录的nohup.out文件
  • 自定义日志路径命令:nohup node 你的应用入口文件.js > 自定义日志文件路径.log 2>&1 &
  • 停止应用步骤:先执行ps aux | grep node查询对应进程的PID,再执行kill 进程PID终止进程即可

2. 生产环境首选方案(PM2进程管理工具)

  • 这是专门针对Node.js生态的进程管理工具,除了后台运行外,还支持崩溃自动重启、日志管理、多实例负载均衡等功能
  • 安装命令:npm install pm2 -g
  • 基础启动命令:pm2 start 你的应用入口文件.js
  • 常用操作命令:
    • 查看所有运行中进程:pm2 list
    • 查看应用实时日志:pm2 logs 应用名称/进程ID
    • 重启应用:pm2 restart 应用名称/进程ID
    • 停止应用:pm2 stop 应用名称/进程ID
    • 删除应用进程:pm2 delete 应用名称/进程ID
  • 配置开机自启:先执行pm2 startup按照终端提示完成操作,再执行pm2 save保存当前运行的进程列表,系统重启后会自动恢复应用运行

3. Linux系统级服务方案(systemd)

  • 无需安装第三方工具,直接把应用配置为系统服务,适合需要和系统能力深度整合的场景
  • 首先在/etc/systemd/system/目录下创建服务文件,命名为你的应用名.service,文件内容参考:

[Unit]
Description=自定义的Node.js应用描述
After=network.target

[Service]
Type=simple
User=运行应用的系统用户名
WorkingDirectory=应用根目录的绝对路径
ExecStart=node程序的绝对路径 你的应用入口文件.js(可通过which node命令查询node的绝对路径)
Restart=always

[Install]
WantedBy=multi-user.target

  • 配置完成后执行以下命令生效:
    • 重载系统服务配置:systemctl daemon-reload
    • 启动应用服务:systemctl start 你的应用名
    • 开启开机自启:systemctl enable 你的应用名
    • 查看应用运行状态:systemctl status 你的应用名
    • 查看应用实时日志:journalctl -u 你的应用名 -f

4. Windows系统方案

  • 可使用winsw工具将Node.js应用封装为Windows系统服务,实现后台运行和开机自启
  • 也可以直接安装Windows版本的PM2,操作逻辑和Linux环境完全一致

内容的提问来源于stack exchange,提问作者Avinish kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 14:36:04