Java ProcessBuilder sudo bash命令的正确命令格式是什么?

Java ProcessBuilder sudo bash命令的正确命令格式是什么?,java,bash,sudo,Java,Bash,Sudo,如何从JavaProcessBuilder执行这样的命令(使用sudo)?(我不需要包含密码,因为普通用户有权以root用户身份运行myscript.log而无需密码。) 我的问题是如何将此命令的元素传递到Java的ProcessBuilder的构造函数中 例如,“sudo”是ProcessBuilderctor的第一个参数,还是最后一个参数,还是其他什么参数?您如何知道它们去了哪里,以及命令的哪些元素成为ProcessBuilder的参数?这里的问题是在您调用的bash命令中没有执行重定向 尝

如何从JavaProcessBuilder执行这样的命令(使用sudo)?(我不需要包含密码,因为普通用户有权以root用户身份运行myscript.log而无需密码。)

我的问题是如何将此命令的元素传递到Java的
ProcessBuilder
的构造函数中


例如,“sudo”是
ProcessBuilder
ctor的第一个参数,还是最后一个参数,还是其他什么参数?您如何知道它们去了哪里,以及命令的哪些元素成为
ProcessBuilder
的参数?

这里的问题是在您调用的bash命令中没有执行重定向

尝试在bash的-c选项中使用传递命令作为字符串执行:

sudo bash -c "/home/me/path/myscript.sh arg1 arg2 arg3 >> /var/log/path/myscript.log 2>&1"
为了将java ProcessBuilder与此命令一起使用,我将尝试如下构造它:

new ProcessBuilder("sudo", "bash", "-c", "/home/me/path/myscript.sh arg1 arg2 arg3 >> /var/log/path/myscript.log 2>&1");
通过使用ProcessBuilder,您基本上要求它执行命令sudo并向其提供3个参数。作为回报,sudo将像这样调用您的命令:
bash-c“…

当进程提示输入sudo密码时,您可能仍然有问题

sudo bash /home/me/path/myscript.sh arg1 arg2 arg3 >> /var/log/path/myscript.log 2>&1