次のコードを使用してshファイルを実行しようとしています(CentOSマシンbtw)
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
このコードをシャットダウン フックからも実行していますが、これが問題になる可能性はありますか? これは、ソフトウェアがゲームサーバーであり、ユーザーが再起動コマンドを使用したり、自分で何もセットアップする必要なく自動再起動したりできるようにするためです。
編集:エラーをテキストファイルに出力することにしたところ、「端末に接続する必要があります」とわかりました。何か案は?これは、スクリーンの使用に関する問題だと思います。