반응형

리눅스상에서 pe -ef를 통해 특정 프로세스를 찾을 수 있습니다.

그리고 | 파이프와 grep 을 통해 필터를 해서 필요한 프로세스만 확인을 합니다.


이 명령어를 자바에서 할 때 주의할 점이 있습니다.

아래 코드에 "Runtime.getRuntime()" 명령어 사용하는 라인을 보면 주석 처리 된 라인과 활성화 된 라인을 비교해 보시기 바랍니다.

주석처리 된 라인으로 실행하게 되면 아무 결과도 얻을 수 없습니다.


포인트는 배쉬 대신 쉘을 이용해서 명령어를 실행해야 파이프나 grep 이 정상적으로 동작한다는 겁니다.

아니면, 실제 저 명령어가 들어가 쉘을 하나 만들어놓고 그 쉘을 그냥 실행하는 방법도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Test {
  public static void main(String[] args) {
    String line;
    try {
      // Process p = Runtime.getRuntime().exec("ps -ef | grep java | grep -v grep");
      Process p = Runtime.getRuntime().exec(new String[] {"sh""-c""ps -ef | grep java | grep -v grep"});
      BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
      while ((line = input.readLine()) != null) {
        System.out.println(line);
      }
    } catch (Exception err) {
      System.out.println(err);
    }
  }
}



반응형

+ Recent posts