运行 引导时的节点应用程序和 jar 文件 Raspbian
Run node app and jar file on boot Raspbian
我有两个文件,一个包含 NodeJS 服务器,另一个 .jar 文件包含 Java 服务器。
当我的系统启动时,我需要 运行 它们。我在 RaspberryPi 4 上 Raspbian。
我创建了一个名为 serversBoot 的文件,内容是:
#!/bin/bash
java -jar server.jar
node webServer.js
Java 服务器正确启动,但节点一似乎没有。
我也不知道如何在我的 Raspberry 启动
后立即制作此脚本 运行
我可以保证 运行 在终端中使用我在 bash 脚本中输入的相同命令工作得很好。
我在这里做错了什么?
编辑
当命令被放入两个不同的文件时它可以工作,当被放在一个文件中时它不起作用。
您必须将每个命令作为一个单独的进程启动。在你的脚本 java -jar...
命令中,只要该进程是 运行.
,命令就会阻止任何其他操作的执行
尝试终止 java 进程以查看 node webServer.js
是否启动。
要启动两者,只需要求 bash 将每个进程发送到后台:
#!/bin/bash
java -jar server.jar &
node webServer.js &
要更好地管理这 2 个进程,您应该捕获它们的 PID,以便您知道要查看哪个进程。您可以这样获取 PID:
#!/bin/bash
java -jar server.jar & java_pid=$!
node webServer.js & node_pid=$!
echo $java_pid > java.pid
echo $node_pid > node.pid
这样 .pid
文件包含已启动进程的进程 ID。
查看更多info on starting and managing processes from bash scripts here
我有两个文件,一个包含 NodeJS 服务器,另一个 .jar 文件包含 Java 服务器。
当我的系统启动时,我需要 运行 它们。我在 RaspberryPi 4 上 Raspbian。
我创建了一个名为 serversBoot 的文件,内容是:
#!/bin/bash
java -jar server.jar
node webServer.js
Java 服务器正确启动,但节点一似乎没有。
我也不知道如何在我的 Raspberry 启动
后立即制作此脚本 运行
我可以保证 运行 在终端中使用我在 bash 脚本中输入的相同命令工作得很好。
我在这里做错了什么?
编辑
当命令被放入两个不同的文件时它可以工作,当被放在一个文件中时它不起作用。
您必须将每个命令作为一个单独的进程启动。在你的脚本 java -jar...
命令中,只要该进程是 运行.
尝试终止 java 进程以查看 node webServer.js
是否启动。
要启动两者,只需要求 bash 将每个进程发送到后台:
#!/bin/bash
java -jar server.jar &
node webServer.js &
要更好地管理这 2 个进程,您应该捕获它们的 PID,以便您知道要查看哪个进程。您可以这样获取 PID:
#!/bin/bash
java -jar server.jar & java_pid=$!
node webServer.js & node_pid=$!
echo $java_pid > java.pid
echo $node_pid > node.pid
这样 .pid
文件包含已启动进程的进程 ID。
查看更多info on starting and managing processes from bash scripts here