2017-05-15 14 views
0

JavaコードからLinuxサービスを実行します。私はさまざまな方法でそれをやろうとしました。 /opt/scripts/service-stop.sh:3行目:サービス:コマンドJavaコードからLinuxサービスを実行するとサービスが発生する:コマンドが見つかりません

を発見していないここに私.SHスクリプト

echo "Service name: $1" 
echo "Start args: $2" 
service $1 start $2 
でもサービス開始を実行するが、私は次のエラーを取得しておく.SHスクリプトを書きます

Javaコード:

private void executeCommandAndWait(String... args) { 
    ProcessBuilder pb= new ProcessBuilder().command(args); 
    Process proc = pb.start(); 
} 

     executeCommandAndWait("/bin/bash", "-c", "/opt/scripts/service-start.sh", srvName, "some-arg"); 

答えて

0

'サービス' は、システムコールであり、sudoのユーザーが実行する必要があります。私はそれがJavaプロセス/ユーザのPATHにないと推測しています。あなたのbashスクリプトでsystemctlを試してみてください

/$PATH_TO_SERVICE/service $1 start $2 
+0

ありがとうございます。 sudoが問題を解決しました –

0

:あなたは、その完全なパスを使用して逃げるかもしれない

を、私はあなたが(多分this answerが役立ちます)、それに引数を渡す方法がわからないんだけど、基本的にはあります:

systemctl start <service> 

または

sudo systemctl start <service> 

アーチのwikiには、いくつかを持っていますvery decent documentation :)

関連する問題