在Process Builder中切换用户

时间:2015-12-14 21:09:09

标签: java linux processbuilder

我想切换用户,然后在新用户下启动命令。 其实我的代码是

String[] commandToRun2 = {"su","-","jboss", "./jboss-cli.sh -c :shutdown(restart=true)"};
ProcessBuilder pb = new ProcessBuilder(commandToRun2);
pb.directory(new File("/home/jboss/soft/jboss-as-7.1.1.Final/bin/"));
Process p = pb.start();

但我不能让它发挥作用。

1 个答案:

答案 0 :(得分:1)

根据this SuperUser answer,您对su的来电似乎并不合适。

从该问题来看,su命令的格式应为

su [username] -c "[command]"

所以,请尝试以下方法:

String[] commandToRun2 = {"su", "jboss", "-c", "./jboss-cli.sh -c :shutdown(restart=true)"};

顺便说一句,记录写入过程的标准输出和标准错误的任何输出可能会有所帮助。如果出现错误,您将能够看到错误是什么,如果进程产生大量输出,读取输出将阻止输出缓冲区填充和阻止进程。 This answer演示了如何执行此操作。