アプリが実行されているかどうかを確認できるように、Java アプリを介して特定のプロセスを検索したい (Apache)。ここにクラスの単純化があります。
package com.tecsys.sm.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import com.tecsys.sm.util.FinalValues;
public class ShellRuntimeCommands {
public static void showApacheProcess(){
try {
String command = "ps ax | grep \"/apps/apache/2.4.4/bin/httpd\" | grep -v \"grep\"";
System.out.println("La commande est: " + command);
final Process proc = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = br.readLine();
System.out.println("The Error line is "+line);
String status;
if(line!=null && line!=""){
status = FinalValues.STARTED_STATUS;
}else{
status = FinalValues.STOPPED_STATUS;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
ShellRuntimeCommands.showApacheProcess();
}
}
出力は次のとおりです。
La commande est: ps ax | grep "/apps/apache/2.4.4/bin/httpd" | grep -v "grep"
The line is ERROR: Garbage option.
問題は、出力の文字列コマンドをコピーして貼り付け、ターミナルで実行すると、正常に動作しますが、Java ランタイムでは動作しません。