O mais novo pm2-init.sh no projeto pm2 repo tem essa capacidade.
Eu configurei o pm2 para executar um aplicativo node.js, e posso iniciá-lo com sucesso e ele irá ressurgir na reinicialização.
No entanto, o daemon pm2 é executado como root, o que me faz pensar que todos os meus scripts de nós também são executados como root? Mesmo que eu os tenha adicionado como usuário regular no sistema. Os arquivos de log e outras coisas são criados no diretório inicial dos usuários, /~/.pm2/logs
, mas os logs são de propriedade de root.
quando eu invoco pm2 startup
(que lida com a instalação do script init.d etc), ele cria /etc/init.d/pm2-init.sh
que se parece com isto:
#!/bin/bash
# chkconfig: 2345 98 02
#
# description: PM2 next gen process manager for Node.js
# processname: pm2
#
### BEGIN INIT INFO
# Provides: pm2
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PM2 init script
# Description: PM2 is the next gen process manager for Node.js
### END INIT INFO
NAME=pm2
PM2=/usr/local/lib/node_modules/pm2/bin/pm2
NODE=/usr/local/bin/node
export HOME="/root"
start() {
echo "Starting $NAME"
$NODE $PM2 stopAll
$NODE $PM2 resurrect
}
stop() {
$NODE $PM2 dump
$NODE $PM2 stopAll
}
restart() {
echo "Restarting $NAME"
stop
start
}
status() {
echo "Status for $NAME:"
$NODE $PM2 list
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "Usage: {start|stop|status|restart}"
exit 1
;;
esac
exit $RETVAL
Quando eu despejo os processos (que é o que ele usará quando ressuscitar os processos), vejo menções ao usuário "USER":"pi"
, mas não acho que ele seja realmente executado como usuário pi.
Alguma opinião?
O mais novo pm2-init.sh no projeto pm2 repo tem essa capacidade.