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



如何从Java ProcessBuilder执行这样的命令(使用sudo)?(我不需要包含密码,因为普通用户有权运行 myscript.log作为没有密码的 root。

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

我的问题是这个命令的元素如何传递到 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 密码时,您可能仍然有问题。

相关内容

  • 没有找到相关文章

最新更新