[java] 자바에서 유닉스/리눅스 시스템 호출을 사용하여 프로세스의 상태를 조회하는 방법에 대해 알려주세요.

유닉스/리눅스 시스템 호출을 이용한 자바에서의 프로세스 상태 조회

유닉스/리눅스 시스템에서 실행 중인 프로세스의 상태를 자바로 조회하는 방법은 매우 간단합니다. 자바에서는 ProcessBuilder 클래스를 이용하여 외부 프로그램 또는 명령어를 호출할 수 있습니다. 또는 Runtime 클래스를 이용하여 외부 프로그램을 실행할 수도 있습니다.

ProcessBuilder를 사용한 프로세스 상태 조회

아래의 코드는 ProcessBuilder를 사용하여 유닉스/리눅스 시스템에서 ps 명령어를 실행하여 프로세스 상태를 조회하는 예시입니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessStatus {
    public static void main(String[] args) throws IOException, InterruptedException {
        ProcessBuilder processBuilder = new ProcessBuilder("ps", "-p", "1234");
        Process process = processBuilder.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        process.waitFor();
    }
}

위 코드에서는 ps -p 1234 명령어를 사용하여 프로세스 ID가 1234인 프로세스의 상태를 조회하고 그 결과를 콘솔에 출력합니다.

Runtime 클래스를 사용한 프로세스 상태 조회

아래의 코드는 Runtime 클래스를 사용하여 유닉스/리눅스 시스템에서 ps 명령어를 실행하여 프로세스 상태를 조회하는 예시입니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessStatus {
    public static void main(String[] args) throws IOException, InterruptedException {
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("ps -p 1234");
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        process.waitFor();
    }
}

두 가지 방법 모두로 유닉스/리눅스 시스템에서 실행 중인 프로세스의 상태를 조회할 수 있습니다. 위의 예시를 통해 자바에서 유닉스/리눅스 시스템 호출을 사용하여 프로세스 상태를 조회하는 방법을 알아보았습니다.

참고 문헌: