[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();
}
}
두 가지 방법 모두로 유닉스/리눅스 시스템에서 실행 중인 프로세스의 상태를 조회할 수 있습니다. 위의 예시를 통해 자바에서 유닉스/리눅스 시스템 호출을 사용하여 프로세스 상태를 조회하는 방법을 알아보았습니다.
참고 문헌: