我正在尝试使用upstart作为非root用户运行nodejs应用程序 但不知何故,脚本的某些部分将无法运行:例如:
"sudo initctl stop pdcapp"
sudo nameofApp start|stop
不起作用sudo initctl stop nameofApp
时,预停止脚本将不会回显到日志文件这不是一个更简洁的方法(systemd)我看了各种各样的教程,显然这就是他们完成的方式。那么我在这里错过了什么?
这是/ etc / init /
下的.conf文件env FULL_PATH="/srv/pd/sept011100/dev"
env NODE_PATH="/usr/local/nodeJS/bin/node"
env NODE_ENV=production
start on filesystem or runlevel [2345]
stop on [!2345]
script
export NODE_ENV #this variable is never set
echo $$ > /var/run/PD.pid
cd $FULL_PATH
# the command below will not work
#exec sudo -u nginx "$NODE_PATH server.js >> /var/log/PD/pdapp.log 2>&1"
exec $NODE_PATH server.js >> /var/log/PD/pdapp.log 2>&1
end script
pre-start script
echo "[`date`] (sys) Starting" >> /var/log/PD/pdapp.log
end script
pre-stop script
rm /var/run/pdapp.pid
echo "[`date`] (sys) Stopping" >> /var/log/PDC/pdapp.log
end script
/ var / log / messages中的当我停止应用程序时,我得到了这个,否则我在日志文件中什么也得不到
Sep 2 18:23:14 547610-redhat-dev2 init: pdcapp pre-stop process (6903) terminated with status 1
Sep 2 18:23:14 547610-redhat-dev2 init: pdcapp main process (6899) terminated with status 143
任何想法为什么这不起作用我正在运行redhat 6.5
答案 0 :(得分:1)
Red Hat有一个超级旧版本的Upstart,它可能充满了bug,因为它们从未为Upstart做过贡献,尽管使用它(Fedora在RHEL 6发布之后立即切换到systemd,之后他们才真正尝试了它)。