Linux没有通过Java执行命令
我试图从一个机器人运行一些服务器,但我无法让它运行我的屏幕和主机服务器。我试着调试并得到一些代码来调试,但我什么也没想到。也许是我的语法 这些是可以运行的值:name=factorio,path=/opt/factorio/bin/x64/factorio,args=--start server map.zip 共同构成:Linux没有通过Java执行命令,java,linux,bash,runtime,Java,Linux,Bash,Runtime,我试图从一个机器人运行一些服务器,但我无法让它运行我的屏幕和主机服务器。我试着调试并得到一些代码来调试,但我什么也没想到。也许是我的语法 这些是可以运行的值:name=factorio,path=/opt/factorio/bin/x64/factorio,args=--start server map.zip 共同构成: screen-dmS factorio-m bash-c”/opt/factorio/bin/x64/factorio--start server map.zip“ 您可以直
screen-dmS factorio-m bash-c”/opt/factorio/bin/x64/factorio--start server map.zip“
您可以直接运行服务器命令,而无需通过抛出屏幕。屏幕是一个终端多路复用器,它允许用户在一个终端窗口内访问多个单独的终端会话。@PascalFares,这样我就可以执行
/opt/factorio/bin/x64/factorio--启动服务器映射。zip
,它会为我运行它吗?它会占用我的java线程吗?我是否有权访问进程stdIn(Screen不允许我访问,所以这将是一个加号)?如果您自己运行Screen-dmS factorio-m bash-c”/opt/factorio/bin/x64/factorio--start server map.zip“
,它是否会生成屏幕并启动服务器?如果我在putty中手动执行,是的,如果我从程序执行,则否。
public boolean run() {
try {
System.out.println("screen -dmS "+serverName+" -m bash -c \""+path+" "+args+"\"");
Process proc = rt.exec("screen -dmS "+serverName+" -m bash -c \""+path+" "+args+"\"");
BufferedReader read = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String str = null;
while ( (str = read.readLine()) != null)
System.out.println(str);
try {
proc.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Exit value: "+proc.exitValue());
this.setStatus(ONLINE);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}