插件窝 干货文章 在Linux上怎么后台运行nodejs

在Linux上怎么后台运行nodejs

进程 Node 会话 bash 471    来源:    2025-04-27

在Linux上后台运行Node.js应用有多种方法,以下是常见的几种方案,根据需求选择最适合的方式:


1. 使用 &nohup(临时运行)

nohup node app.js > app.log 2>&1 &
  • &:将进程放到后台运行。
  • nohup:忽略挂断信号(防止SSH断开时进程被终止)。
  • > app.log:将标准输出重定向到日志文件。
  • 2>&1:将错误输出也重定向到同一日志文件。

查看进程

jobs -l  # 查看后台任务
ps aux | grep node  # 查看所有Node进程

终止进程

kill -9 <PID>  # 通过进程ID终止

2. 使用 screentmux(会话管理)

screen(适合临时会话)

screen -S node_session  # 创建新会话
node app.js             # 在会话中运行程序
Ctrl+A, D               # 分离会话(程序继续运行)
  • 恢复会话screen -r node_session
  • 查看所有会话screen -ls

tmux(更现代的替代品)

tmux new -s node_session
node app.js
Ctrl+B, D               # 分离会话
  • 恢复会话tmux attach -t node_session

3. 使用 systemd(生产环境推荐)

创建服务文件(需root权限):

sudo nano /etc/systemd/system/nodeapp.service

配置文件示例

[Unit]
Description=Node.js Application
After=network.target

[Service]
User=your_username
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/node /path/to/app/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

操作命令

sudo systemctl daemon-reload            # 重载配置
sudo systemctl start nodeapp            # 启动服务
sudo systemctl enable nodeapp           # 开机自启
sudo systemctl status nodeapp           # 查看状态

4. 使用 pm2(Node.js专用进程管理器)

安装pm2

npm install pm2 -g

运行应用

pm2 start app.js --name "myapp"  # 启动并命名进程
pm2 save                         # 保存当前进程列表
pm2 startup                     # 生成开机自启脚本

常用命令

pm2 list              # 查看进程
pm2 logs myapp        # 查看日志
pm2 restart myapp     # 重启
pm2 delete myapp      # 删除

5. 其他工具

  • forever(较老的Node.js进程管理工具): bash npm install forever -g forever start app.js

方案对比

方法 适用场景 优点 缺点
nohup 临时测试 简单快速 无进程监控/自动重启
screen/tmux 开发调试 可交互、随时查看日志 需手动管理
systemd 生产环境 稳定、支持开机自启 配置稍复杂
pm2 生产环境(Node专用) 日志管理、集群模式、监控 需额外安装

推荐选择

  • 开发测试tmuxnohup
  • 生产环境:优先用 pm2(功能全面)或 systemd(系统集成度高)。

根据实际需求选择最适合的方案!