我正在尝试通过以下代码(CentOS 机器顺便说一句)执行 sh 文件
Runtime.getRuntime().exec("sh " + file.getPath());
我将此代码用于Windows,它工作正常
Runtime.getRuntime().exec("cmd /c start " + file.getPath());
可能是因为我在 .sh 文件中使用了 Screen 吗?我也在使用 java 命令来启动服务器,所以也许我需要包括这些?
这是sh文件的内容
#!/bin/sh
BINDIR=$(dirname "$(readlink -fn "$0")")
cd "$BINDIR"
screen -S PrivateServer java -Xms2048M -Xmx2048M -jar somejar.jar -o true
我也在从关闭挂钩运行此代码,这可能是问题吗?这是因为该软件是一个游戏服务器,它的目的是让用户可以使用重启命令或让它自动重启,而无需自己设置任何东西。
编辑:我决定将错误输出到一个文本文件,发现这个“必须连接到终端”。有任何想法吗?我相信这是与使用屏幕有关的问题。