在Ubuntu(14.04)VM上,我有一个要在启动时运行的简单节点服务器。以下脚本与一样被调用时有效./noderoot start
,但是在启动时未运行。该脚本是
#!/bin/sh
### BEGIN INIT INFO
# Provides: noderoot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: bootin and rootin
# Description: Start root server on boot
### END INIT INFO
export PATH=$PATH:/usr/bin
export NODE_PATH=$NODE_PATH:/home/azureuser/npm/bin
case "$1" in
start)
forever --sourceDir=/var/www/root -p /var/www/logs app.js
;;
stop)
forever stop --sourceDir=/var/www/root app.js
;;
*)
echo "Usage: /etc/init.d/noderoot {start|stop}"
exit 1
;;
esac
exit 0
该脚本包含在/etc/init.d
其中755
以获取权限。我尝试运行update-rc.d
以下结果:
root@linux-dev:~# update-rc.d noderoot defaults 80
Adding system startup for /etc/init.d/noderoot ...
/etc/rc0.d/K80noderoot -> ../init.d/noderoot
/etc/rc1.d/K80noderoot -> ../init.d/noderoot
/etc/rc6.d/K80noderoot -> ../init.d/noderoot
/etc/rc2.d/S80noderoot -> ../init.d/noderoot
/etc/rc3.d/S80noderoot -> ../init.d/noderoot
/etc/rc4.d/S80noderoot -> ../init.d/noderoot
/etc/rc5.d/S80noderoot -> ../init.d/noderoot
root@linux-dev:~# update-rc.d noderoot enable
update-rc.d: warning: start runlevel arguments (none) do not match noderoot Default-Start values (2 3 4 5)
update-rc.d: warning: stop runlevel arguments (none) do not match noderoot Default-Stop values (0 1 6)
Enabling system startup links for /etc/init.d/noderoot ...
Removing any system startup links for /etc/init.d/noderoot ...
/etc/rc0.d/K80noderoot
/etc/rc1.d/K80noderoot
/etc/rc2.d/S80noderoot
/etc/rc3.d/S80noderoot
/etc/rc4.d/S80noderoot
/etc/rc5.d/S80noderoot
/etc/rc6.d/K80noderoot
Adding system startup for /etc/init.d/noderoot ...
/etc/rc0.d/K80noderoot -> ../init.d/noderoot
/etc/rc1.d/K80noderoot -> ../init.d/noderoot
/etc/rc6.d/K80noderoot -> ../init.d/noderoot
/etc/rc2.d/S80noderoot -> ../init.d/noderoot
/etc/rc3.d/S80noderoot -> ../init.d/noderoot
/etc/rc4.d/S80noderoot -> ../init.d/noderoot
/etc/rc5.d/S80noderoot -> ../init.d/noderoot
据我所知,这成功完成了。我可以通过运行启动服务sudo service noderoot start
。但是,计算机重新启动时,我的可执行文件未运行。有什么方法可以解决正在发生的事情吗?是否有任何特定的日志文件可以阐明如何解决此问题?
查看日志/var/log/boot.log
(由Letizia提供),我发现一条非常可疑的行:
/etc/rc2.d/S80noderoot: 16: /etc/rc2.d/S80noderoot: forever: not found
找不到该命令指出该路径存在问题。果然行
export PATH=$PATH:/usr/bin
export NODE_PATH=$NODE_PATH:/home/azureuser/npm/bin
被颠倒了。切换这些变量以指向正确的目录,以及cd
在执行之前在脚本中添加aforever
似乎已解决了运行脚本遇到的所有问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句