0

当我从控制台运行命令时,一切正常:

sudo -u oracle fgrep ...

当我使用 Java 代码运行相同的命令时ProcessBuilder,sudo 不起作用,我需要将 chmod 设置为 775,否则我没有读取日志的权限。

为什么这不起作用?没有 chmod 775 是否有读取日志的选项?

这是我的使用方式ProcessBuilder

ProcessBuilder pb = new ProcessBuilder("bash", "-c", command);
Process shell = pb.start();

InputStream is = shell.getInputStream();
4

2 回答 2

0

一种。当你执行命令时,你不需要 bash -c,你有一个 shell。

湾。该命令需要在空格上拆分,然后作为数组传递到 ProcessBuilder 中。

于 2012-12-07T08:26:54.860 回答
0

既然你说它chmod 775适用于日志文件,很明显你的进程没有权限。

您可以使用 sudo 运行您的 java:

sudo java ClassFileName

或者只是添加sudo作为传递给 bash 进程的数组中的第一个字符串:

command[0]="sudo -u oracle ";

//command[1]=commandname;

//command[2...n]=Other params;

假设用户oracle在 sudoers 列表中并且不会询问密码,这将像您在使用sudo.

于 2012-12-07T08:39:47.940 回答