运行 引导时的节点应用程序和 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