Javascript 如何通过/etc/rc.local运行我的node.js应用程序?
我想从我的raspberry pi运行一个节点应用程序。应用程序应该在引导时启动 我已在/etc/rc.local(出口0之前)中包含以下行: 我首先导航到正确的文件夹,然后从那里运行bot。但是,当我重新启动raspberry pi时,节点应用程序没有运行。因此,似乎rc.local未执行或无法执行我提供的行 我正在寻找一种解决方案,以便应用程序在启动时运行。保存此选项Javascript 如何通过/etc/rc.local运行我的node.js应用程序?,javascript,node.js,raspberry-pi,Javascript,Node.js,Raspberry Pi,我想从我的raspberry pi运行一个节点应用程序。应用程序应该在引导时启动 我已在/etc/rc.local(出口0之前)中包含以下行: 我首先导航到正确的文件夹,然后从那里运行bot。但是,当我重新启动raspberry pi时,节点应用程序没有运行。因此,似乎rc.local未执行或无法执行我提供的行 我正在寻找一种解决方案,以便应用程序在启动时运行。保存此选项 [Unit] Description=Node JS Script Service After=network.target
[Unit]
Description=Node JS Script Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node /path/to/hello_env.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
至/etc/systemd/system/asnodescript.service
sudo systemctl后台程序重新加载
sudo systemctl start nodescript
如果它工作,让它在启动时启动
sudo systemctl enable nodescript
我已经看到(类似)使用的示例
请注意
。如您所见,
重定向标准输出(stdout)。如前所述
用于立即向程序发送EOF,这样程序就不会等待输入(/dev/null
,空设备,是一个特殊文件,它丢弃所有写入的数据,但报告写入操作成功,并且不向任何从中读取的进程提供数据,从而立即产生EOF)&
是一种特殊类型的命令分隔符,用于对前面的过程进行后台处理
由于您没有使用
,可能您的程序被卡住了,正在等待一些输入。最后的&
使程序在后台运行。尽量不包括它,看看你的Rasberry Pi是否仍在启动。如果没有,您知道您的程序会持续运行并阻止进一步启动;当您使用&
符号时,您的程序在一个单独的进程中失败。在这种情况下,将
更改为谢谢,我尝试了这个。但是,当我运行sudo systemctl start nodescript时,它告诉我它失败了无法启动Node JS脚本服务
很抱歉回答得太晚,但解决方案应该是chmod 644/etc/systemd/system/nodescript.Service
再次感谢您的回复。然而,它似乎仍然不能正常工作,当我运行sudo systemctl start nodescript时,什么也没有发生。运行systemctl status nodescript.service
后,我得到以下输出:我知道这是一篇旧文章,但您是否找到了修复方法?我和@K.tilmanow遇到了同样的问题,因为你在回复这篇我完全忘记提到的旧帖子时,你的脚本需要有执行标志当然chmod+x/path/to/hello_env.js
[Unit]
Description=Node JS Script Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node /path/to/hello_env.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
cd /home/pi/PPBot
node bot.js < dev/null &
cd /home/pi/PPBot
node bot.js > dev/null &