Запустите приложение узла и файл JAR при загрузке Raspbian - PullRequest
0 голосов
/ 10 января 2020

У меня есть два файла, один из которых содержит сервер NodeJS, а другой файл .jar, содержащий сервер Java.
Мне нужно запустить оба из них при загрузке системы. Я на Raspbian на RaspberryPi 4.

Я создал файл ServersBoot, содержимое которого:

#!/bin/bash

java -jar server.jar
node webServer.js

Сервер Java запускается правильно, но узел один не кажется к.
Кроме того, я понятия не имею, как заставить этот сценарий запускаться, как только моя Raspberry загружается
Я могу заверить, что выполнение в терминале тех же команд, которые я ввел в сценарий bash, работает нормально.
Что я здесь не так делаю?


РЕДАКТИРОВАТЬ
Когда команды помещаются в два разных файла, они работают, но не работают, если помещены в один файл.

1 Ответ

1 голос
/ 10 января 2020

Вы должны запускать каждую команду как отдельный процесс. В вашем скрипте команда java -jar... блокирует выполнение чего-либо еще на время выполнения этого процесса.

Попробуйте убить процесс java, чтобы увидеть, запускается ли node webServer.js.

Чтобы запустить оба, просто попросите bash отправить каждый процесс в фоновый режим:

#!/bin/bash

java -jar server.jar &
node webServer.js &

Чтобы немного лучше управлять этими двумя процессами, вам нужно захватить их 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 файлы содержат номера запущенных процессов

Подробнее о запуске и управлении процессами из сценариев bash ее е

...