Ubuntu 14.04 - pm2启动后重启后无法启动

Max*_*Max 6 ubuntu pm2 ubuntu-14.04

我正在使用pm2来启动node.js进程,我希望在系统(Intel Atom处理器上的Ubuntu 14.04)启动时自动启动此进程.我按照pm2网站上的说明操作但没有成功.我的dump.pm2似乎是正确的,但pm2守护程序永远不会启动.无论有没有指定用户,我都尝试了ubuntulinux选项pm2 startup,以及自动检测.文件(链接)S20pm2-init.sh已创建,/etc/rc[2-5].d但没有任何开始.我在系统日志中找不到任何明显的错误消息.

有任何想法吗?

编辑添加

我发现 service pm2-init.sh start从我的登录帐户运行时正确启动守护程序,这USER=与文件中定义的相同/etc/init.d/pm2-init.sh.我已经确保PM2_HOME此文件中的定义也指向正确的位置.但是,它仍然无法在系统启动时启动!

Red*_*Red 6

为了让pm2启动工作,文档这里有一个关键命令.

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

在这里参考@ lazlojuly的答案.


xin*_*ose 5

在 Ubuntu 上哪些步骤对我有用 18.04.4

  1. npm i pm2 -g
  2. 以 root 用户身份运行此命令: pm2 startup
    • 创建pm2-root在以下位置找到的服务/etc/systemd/system
  3. systemctl enable pm2-root, service pm2-root status
    • 注意:节点升级后,以 root 身份运行这些命令:pm2 unstartup, pm2 startup; 文件
  4. pm2 start dist\index.js --name YourNodeApp
  5. pm2 save
  6. reboot
  7. pm2 ls应该显示您的YourNodeApp在线


Max*_*Max 3

嗯,无论如何,我认为这有效。我最初尝试以系统用户(无登录 shell)启动,称为node-red运行同名的节点应用程序,当这不起作用时,我尝试以普通用户启动max。经过一番摆弄后,它突然开始工作,在这个缓慢的 Atom 处理器上,节点应用程序仅在桌面出现几分钟后启动。

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

sudo npm install pm2@latest -g
pm2 update
Run Code Online (Sandbox Code Playgroud)

获取最新版本,以防有帮助。我从 0.14.7 移至 0.15.7

然后我跑了

sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u node-red"
Run Code Online (Sandbox Code Playgroud)

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

export PM2_HOME="/home/node-red/.pm2"
Run Code Online (Sandbox Code Playgroud)

然后我成为该用户的登录版本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
Run Code Online (Sandbox Code Playgroud)

然后我退出 的node-redshell,重新启动,并且(大约一分钟的延迟后)应用程序运行良好!

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

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