pm2不在ubuntu启动

我想在启动时运行pm2而没有成功

我正在安装在Ubuntu 16.04。

我的npm目录是:〜/ .npm-global。

在那里,我可以看到pm2 -> ../lib/node_modules/pm2/bin/pm2

没有转储文件。

我的pm2目录是〜/ .pm2:

在那里,我可以看到dump.pm2和rpc.sock

如果我做:

 sudo $(which pm2) start app.js sudo $(which pm2) startup ubuntu -u $USER sudo $(which pm2) save 

它显示了我:

 Generating system init script in /etc/init.d/pm2-init.sh [PM2] Making script booting at startup... [PM2] -ubuntu- Using the command: su -c "chmod +x /etc/init.d/pm2-init.sh && update-rc.d pm2-init.sh defaults" [PM2] Done. [PM2] Saving current process list... [PM2] Successfully saved in /home/theUser/.pm2/dump.pm2 

我可以看到,该应用程序运行良好。

如果我这样做, sudo ~/.npm-global/bin/pm2 start /etc/init.d/pm2-init.sh ,它给了我:

 events.js:160 throw er; // Unhandled 'error' event ^ Error: connect EACCES ~/.pm2/rpc.sock at .... 

/etc/init.d/pm2-init.sh有:

 NAME=pm2 PM2=/home/theUser/.pm2 USER=theUser DEFAULT=/etc/default/$NAME export PATH=/usr/bin:$PATH export PM2_HOME="/home/theUser/.npm-global/lib/node_modules/pm2/bin/" 

我也试过使用: export PM2_HOME="/home/theUser/.pm2

当我从/etc/init.d/pm2-init.sh启动scipt时,它说它不能转储(可能是因为dump只存在于〜/ .pm2目录中)

如果我尝试:

  sudo $(which pm2) start app.js sudo $(which pm2) startup systemd -u $USER sudo $(which pm2) save 

并手动执行(因为它不能像普通用户那样findpm2):

sudo〜/ .npm-global / pm2 dump &&〜/ .npm-global / pm2 kill && systemctl daemon-reload && systemctl enable〜/ .npm-global / pm2 && systemctl start〜/ .npm-global / pm2

所以,

1)我不知道如果我必须运行sudo $(which pm2) startup systemd -u $USERsudo $(which pm2) startup ubuntu -u $USER

2)我应该有什么PM2和PM2_HOME?

3)如何将~/.npm-global/bin到sudopath,或者当我将pm2作为sudo运行时,一般如何使用这个path。注意,我不想改变/ etc / sudoers。

我不能回答你所有的问题,但是我遇到了同样的问题,这对我有用: http : //www.anicehumble.com/2016/05/pm2-must-not-be-ran-with-sudo.html