我正在使用pm2启动node.js进程,我希望在启动系统(Intel Atom处理器上的Ubuntu 14.04)时自动启动此进程。我按照pm2 web site上的说明操作,但没有成功。我的dump.pm2似乎是正确的,但pm2守护程序永远不会启动。我已尝试将ubuntu
和linux
两个选项都添加到pm2 startup
,以及自动检测,无论是否有指定用户。已在S20pm2-init.sh
中创建了文件(链接)/etc/rc[2-5].d
但未启动任何内容。我在系统日志中找不到任何明显的错误消息。
有什么想法吗?
编辑以添加
我找到了
从我的登录帐户运行时,service pm2-init.sh start
正确启动守护程序,该帐户与文件USER=
中/etc/init.d/pm2-init.sh
定义的守护程序相同。我已确保此文件中的PM2_HOME
定义也指向正确的位置。但是,它仍然无法在系统启动时启动!
答案 0 :(得分:5)
为了让pm2启动工作,documentation和here.
中隐藏了一个关键命令您必须1)启动所有进程,2)创建启动脚本,3)运行
pm2 save
答案 1 :(得分:3)
在Ubuntu 18.04.4
上哪些步骤对我有用?
npm i pm2 -g
pm2 startup
pm2-root
中找到的服务/etc/systemd/system
systemctl enable pm2-root
,service pm2-root status
pm2 unstartup
,pm2 startup
; documentation pm2 start dist\index.js --name YourNodeApp
pm2 save
reboot
pm2 ls
应该在线显示您的YourNodeApp
答案 2 :(得分:2)
嗯,我认为无论如何这都有效。我最初试图以一个名为node-red
的系统用户(没有登录shell)来运行同名的节点应用程序,当它没有工作时我尝试以普通用户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
。
我仍然不确定为什么它第一次没有正常工作。
答案 3 :(得分:0)
我一直在寻找戒烟的工作,直到我找到这个解决方案
执行pm2保存后
这对我来说现在很好用
答案 4 :(得分:0)
基本上,
步骤1:运行以下命令,
pm2 startup
这里您将生成1条命令,copy/paste
并完成。
(您将从上一步获得的示例命令:sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
)
Ref