通过nodejs运行Java服务器的Linux脚本?

时间:2019-06-15 21:26:29

标签: node.js bash

我有一个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 :(得分:0)

问题是服务器命令未在分离的屏幕会话中运行。它们都在两个屏幕命令之后运行。

要在此示例的分离屏幕会话中运行命令,将需要使用:

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模式设置应在第二行的注释中出现。