持久化应用程序:启动脚本生成器
PM2 可以生成启动脚本并对其进行配置,以便在预期或意外的机器重启后保持进程列表不变。
- systemd:Ubuntu >= 16,CentOS >= 7,Arch,Debian >= 7
- upstart:Ubuntu ==> 14
- launchd:Darwin,MacOSX
- openrc:Gentoo Linux,Arch Linux
- rcd:FreeBSD
- systemv:Centos 6,Amazon Linux
这些初始化系统可以通过 pm2 startup
命令自动检测到。
生成启动脚本
要自动生成和配置启动脚本,只需键入命令(无需 sudo)pm2 startup
$ pm2 startup
[PM2] You have to run this command as root. Execute the following command:
sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>
然后将显示的命令复制/粘贴到终端
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 save
手动恢复进程
要手动恢复以前保存的进程(通过 pm2 save)
pm2 resurrect
禁用启动系统
要禁用并删除当前的启动配置
pm2 unstartup
上一行代码让 PM2 检测您的平台。或者,您可以使用以下命令自己使用另一个指定的初始化系统
Node.js 版本升级后更新启动脚本
升级本地 Node.js 版本时,请确保更新 PM2 启动脚本,以便它运行您已安装的最新 Node.js 二进制文件。
首先禁用并删除当前的启动配置(复制/粘贴该命令的输出)
$ pm2 unstartup
然后恢复新的启动脚本
$ pm2 startup
用户权限
假设您希望以另一个用户身份执行启动脚本。
只需更改 -u <username>
选项和 --hp <user_home>
pm2 startup ubuntu -u www --hp /home/ubuntu
指定初始化系统
如果需要,您可以自己指定使用的平台(其中平台可以是上面引用的任何一个)
pm2 startup [ubuntu | ubuntu14 | ubuntu16 | ubuntu18 | ubuntu20 | ubuntu12 | centos | centos6 | arch | oracle | amazon | macos | darwin | freebsd | systemd | systemv | upstart | launchd | rcd | openrc]
SystemD 安装检查
# Check if pm2-<USER> service has been added
$ systemctl list-units
# Check logs
$ journalctl -u pm2-<USER>
# Cat systemd configuration file
$ systemctl cat pm2-<USER>
# Analyze startup
$ systemd-analyze plot > output.svg
为了有效地等待机器联机以运行 PM2
[Unit]
Wants=network-online.target
After=network.target network-online.target
[....]
[Install]
WantedBy=multi-user.target network-online.target
Windows 启动脚本
要生成与 Windows 兼容的启动脚本,请查看优秀的 pm2-installer
支持的初始化系统
- systemd:Ubuntu >= 16,CentOS >= 7,Arch,Debian >= 7
- upstart:Ubuntu <= 14
- launchd:Darwin,MacOSX
- openrc:Gentoo Linux,Arch Linux
- rcd:FreeBSD
- systemv:Centos 6,Amazon Linux
这些初始化系统可以通过 pm2 startup
命令自动检测到。