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

ログファイルが機能すると言うので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 に答える
0

を。シェルがあるコマンドを実行しているときは、bash -c は必要ありません。

b. コマンドはスペースで分割し、配列として ProcessBuilder に渡す必要があります。

于 2012-12-07T08:26:54.860 に答える