Ubuntu 14.04 – pm2启动后没有启动后重新启动

我正在使用pm2来启动一个node.js进程,并且我希望在启动系统(Intel Atom处理器上的Ubuntu 14.04)时自动启动这个进程。 我遵循pm2网站上的说明,但没有成功。 我的dump.pm2似乎是正确的,但pm2守护进程从未启动。 我已经尝试了ubuntulinux选项到pm2 startup ,以及autodetect,无论是否有指定的用户。 文件(链接) S20pm2-init.sh已经在/etc/rc[2-5].d创build,但是没有任何东西可以开始。 我无法在系统日志中find任何明显的错误消息。

有任何想法吗?

编辑添加

我发现service pm2-init.sh start从我的login帐户(与文件/etc/init.d/pm2-init.sh中的USER=所定义的帐户相同)运行时正确启动守护进程。 我已经确定这个文件中的PM2_HOME定义也指向了正确的位置。 但是,它仍然不启动系统启动!

pm2启动工作,有一个关键的命令埋在文档和这里。

您必须1)启动您的所有进程,2)创建启动脚本,3)运行pm2 save

参考@ lazlojuly的答案在这里 。

好吧,无论如何,我认为这个工作。 我最初试图启动一个系统用户(没有登录shell),称为运行相同名称的节点应用程序的node-red ,当没有工作,我试图启动为普通用户max 。 经过一些摆弄之后,它突然开始工作, 但是在这个缓慢的Atom处理器上,节点应用程序在台式机出现之后仅仅几分钟就开始。

为了让它在系统用户下运行:首先,以max身份登录,我删除了所有pm2作业并运行pm2 save以创建一个空的转储文件。 然后我做了:

 sudo npm install pm2@latest -g pm2 update 

为了获得最新版本,以防万一。 我从0.14.7移到了0.15.7

然后我跑了

 sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u node-red" 

并编辑/etc/init.d/pm2-init.sh ,将设置PM2_HOME目录的行更正为node-red的主目录:

 export PM2_HOME="/home/node-red/.pm2" 

然后,我成为了node-red用户的登录版本,更改为该用户的主目录,启动了我的工作,并保存了进程列表:

 sudo -H -u node-red bash -l cd pm2 start /usr/local/bin/node-red --node-args="--max-old-space-size=128" -- -v -u /home/node-red/.node-red pm2 save 

然后,我从node-red的shell中退出,重新启动,(经过一分钟左右的延迟),应用程序运行良好!

请注意,这是Ubuntu 14.04,它使用init / upstart系统。 后来的版本我认为使用systemd方法,可能需要在创建启动脚本时将ubuntu参数更改为systemd

不过,我仍然不确定为什么它第一次不能正常工作。

我一直在寻找解决办法,直到我来到这个解决方案

执行pm2保存后

  1. 这个文件将被创建 – > /etc/init.d/pm2-init.sh
  2. 然后在cron选项卡上@reboot root /etc/init.d/pm2-init.sh启动这个等同于在cmd上执行它,但在重新启动时触发

现在这对我来说工作得很好