我正在运行Raspberry Pi运行Raspbian运行Node.js应用程序,并尝试在Pi启动时启动它 . 我找到了几个例子,但我似乎无法让它工作 . 我目前的代码是:
#! /bin/sh
# /etc/init.d/MyApp
### BEGIN INIT INFO
# Provides: MyApp.js
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts MyApp.js
# Description: Start / stop MyApp.js at boot / shutdown.
### END INIT INFO
# If you want a command to always run, put it here
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting MyApp.js"
# run application you want to start
node /home/pi/app/MyApp/MyApp.js
;;
stop)
echo "Stopping MyApp.js"
# kill application you want to stop
killall MyApp.js
;;
*)
echo "Usage: /etc/init.d/MyApp {start|stop}"
exit 1
;;
esac
exit 0
我有这个在etc / init.d文件夹中,运行 chmod +x /etc/init.d/MyApp
,我能够手动运行它,然后我运行 sudo update-rc.d MyApp defaults
,重启并且脚本永远不会运行 . 我看了一些不同的例子,做了调整,但仍然没有运气 .
3 回答
我首先检查了RaspberryPi上安装了node.js的位置,从而解决了这个问题:
这给了我:
打开crontab配置:
然后在我的crontab中:
保存,重启,问题解决了!
如果您使用的是预先构建的Pi版本,如0.10.24,则可能会遇到PATH问题 .
您可以提供节点二进制文件的完整路径作为
start
命令的一部分,或者确保在运行/etc/init.d/MyApp
之前设置节点二进制文件的PATH . 我有同样的问题,并尝试了两个成功 . 此外,您拥有的stop
命令可能无法正常工作 .如果您想要
sudo node
,可以使用sudo visudo
将PATH添加到Defaults secure_path
.此外,我建议使用像forever这样的东西来保持你的进程在崩溃后运行,什么不是 .
Mohit是对的,但只是为了澄清,您可以使用 readlink 来查找Node.js应用程序的完整路径,因为稍后需要将其添加为cron作业 .
例如
readlink -f HAP-NodeJS/Core.js
结果为/home/pi/HAP-NodeJS/Core.js
您还可以使用
which node
查找安装node.js的完整路径接下来,使用
sudo crontab -e
创建一个新的cron作业,并在最后添加以下代码:例如,我的代码看起来像这样 .
重启(或启动)后,您的Node.js应该运行 . 希望这能清除事情 .