Startup

持久应用程序:启动脚本生成器

PM2 可以生成启动脚本并对其进行配置,以便在预期或意外的计算机重新启动时保持进程列表不变。

  • systemd: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7
  • 新贵: Ubuntu ==> 14
  • 推出:达尔文,MacOSx
  • openrc: Gentoo Linux, Arch Linux
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux

PM2 通过命令自动检测这些初始化系统。pm2 startup

生成启动脚本

要自动生成和配置启动脚本,只需键入以下命令(不带 sudo):pm2 startup

bash
$ pm2 startup

# [PM2] 您必须以 root 身份运行此命令。 执行以下命令:
$ sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

然后将显示的命令复制/粘贴到终端上:

bash
$ sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

现在PM2将在启动时自动重新启动。

注意:您可以通过 --service-name <name> 选项自定义服务名称 #3213

保存要在重新启动时还原的应用程序列表

启动所有所需的应用程序后,保存应用程序列表,以便在重新启动后重新生成:

手动复活进程

要手动恢复以前保存的进程(通过 pm2 保存):

禁用启动系统

要禁用和删除当前启动配置,请执行以下操作:

前面的行代码让 PM2 检测您的平台。或者,您可以使用以下方法自己使用另一个指定的初始化系统:

在 Node.js 版本升级后更新启动脚本

升级本地 Node.js 版本时,请务必更新 PM2 启动脚本,使其运行已安装的最新 Node.js 二进制文件。

首先禁用并删除当前启动配置(复制/粘贴该命令的输出):

然后恢复新的启动脚本:

用户权限

假设您希望在另一个用户下执行启动脚本。

只需更改选项和:-u <username>``--hp <user_home>

bash
$ pm2 startup ubuntu -u www --hp /home/ubuntu

指定初始化系统

如果需要,您可以自己指定您使用的平台(其中平台可以是上面引用的其中之一):

bash
$ pm2 startup [ubuntu | ubuntu14 | ubuntu16 | ubuntu18 | ubuntu20 | ubuntu12 | centos | centos6 | arch | oracle | amazon | macos | darwin | freebsd | systemd | systemv | upstart | launchd | rcd | openrc]

SystemD 安装检查

bash
# 查看是否添加了pm2-<USER>服务
$ systemctl list-units

# 检查日志
$ journalctl -u pm2-<USER>

# 猫系统配置文件
$ systemctl cat pm2-<USER>

# 分析启动
$ systemd-analyze plot > output.svg

为了有效地等待该机器在线等待PM2运行:

bash
[Unit]
Wants=network-online.target
After=network.target network-online.target

[....]

[Install]
WantedBy=multi-user.target network-online.target

窗口启动脚本

要生成与Windows兼容的启动脚本,请查看出色的pm2安装程序

支持的初始化系统

  • systemd: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7
  • 新贵:Ubuntu <= 14
  • 推出:达尔文,MacOSx
  • openrc: Gentoo Linux, Arch Linux
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux

这些初始化系统由 PM2 使用pm2 启动命令自动检测。