更好的方法是使用pm2 startup
command
http://pm2.keymetrics.io/docs/usage/startup/ http://pm2.keymetrics.io/docs/usage/startup/
要获取为您的计算机自动配置的启动脚本,您需要键入以下命令:
# Detect available init system, generate configuration and enable startup system
pm2 startup
如果您愿意,您可以指定自己使用的平台(其中平台可以是上面引用的平台之一):
pm2 startup [ubuntu | ubuntu14 | ubuntu12 | centos | centos6 | arch | oracle | amazon | macos | darwin | freebsd | systemd | systemv | upstart | launchd | rcd | openrc]
此命令的输出可以是复制/粘贴行的建议,其中包含为您配置的所有环境变量和选项。
Example:
[PM2] 您必须以 root 身份运行此命令。执行以下命令:
sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 启动 -u --hp
您只需复制/粘贴 PM2 为您提供的行,启动脚本就会为您的操作系统进行配置。
一旦你运行sudo pm2 startup
。它将创建systemctl service
。您可以使用以下命令检查相同的状态
systemctl status pm2-root
默认情况下,该服务未配置为自动重新启动。您将运行以下命令
sudo mkdir -p /etc/systemd/system/pm2-root.service.d
然后创建一个文件名10_auto_restart_pm2.conf
包含以下内容
[Service]
Restart=always
RestartSec=3
之后执行
systemctl daemon-reload
systemctl restart pm2-service
现在我们来测试一下自动重启部分
$ systemctl status pm2-root.service
● pm2-root.service - PM2 process manager
Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/pm2-root.service.d
└─10_auto_restart_pm2.conf
Active: active (running) since Wed 2018-02-28 16:52:19 UTC; 11s ago
Docs: https://pm2.keymetrics.io/
Process: 5014 ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill (code=exited, status=0/SUCCESS)
Process: 5022 ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect (code=exited, status=0/SUCCESS)
Main PID: 5031 (PM2 v2.10.1: Go)
Tasks: 9
Memory: 24.3M
CPU: 460ms
CGroup: /system.slice/pm2-root.service
└─5031 PM2 v2.10.1: God Daemon (/home/vagrant/.pm2)
现在我们手动杀死进程并等待3秒
$ kill -9 5031
$ sleep 3
$ systemctl status pm2-root.service
● pm2-root.service - PM2 process manager
Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/pm2-root.service.d
└─10_auto_restart_pm2.conf
Active: active (running) since Wed 2018-02-28 16:52:55 UTC; 641ms ago
Docs: https://pm2.keymetrics.io/
Process: 5057 ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill (code=exited, status=0/SUCCESS)
Process: 5081 ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect (code=exited, status=0/SUCCESS)
Main PID: 5088 (PM2 v2.10.1: Go)
Tasks: 9
Memory: 24.3M
CPU: 461ms
CGroup: /system.slice/pm2-root.service
└─5088 PM2 v2.10.1: God Daemon (/home/vagrant/.pm2)
如您所见,进程/服务已自动重新启动。不需要 cron,这就是你应该做的。