Linux скрипт, который запускает сервер Java через nodejs? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть Java-программа, которая запускает игровой сервер TCP / IP.

У меня есть угловое приложение, которое общается с сервером express node.js для запуска / остановки игрового сервера.

При нажатии кнопки запуска на сервере nodejs выполняется следующая операция:

shell.exec('/web/starter.sh');

И это мой сценарий:

:set fileformat=unix
#!/bin/sh
screen -RD server -X quit;
screen -dmS server;
cd ~/cadesim-monomer; 
java -jar CadeServerEngine.jar;

Работает, запускает сервер.Но всякий раз, когда я нажимаю кнопку «Пуск» снова, он не перезагружает сервер, как следует.Должен убить экран и перезагрузить?

Что я сделал не так?

1 Ответ

0 голосов
/ 16 июня 2019

Проблема в том, что команды сервера не выполняются в сеансе отдельного экрана. Они запускаются после обеих команд на экране.

Для запуска команды в отдельном сеансе экрана для этого примера потребуется:

screen -dmS server sh -c "cd ~/cadesim-monomer; java -jar CadeServerEngine.jar"

Или вы можете поместить сервер и его настройки в его собственный файл оболочки, и этот файл будет иметь внешний вид, похожий на скрипт запуска daemontools. И тогда у вас будет такая команда:

screen -dmS server ./server.sh

Также строка shebang должна быть первой строкой в ​​файле. Сценарий просто работает, потому что оболочка является интерпретатором по умолчанию. Выдает ошибку line 1: :set: command not found. Настройка режима VIM должна указываться в комментарии во второй строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...