[java] 자바에서 유닉스/리눅스 시스템 호출을 어떻게 사용할 수 있나요?

유닉스 또는 리눅스 명령을 자바에서 실행하는 방법은 java.lang.ProcessBuilder 클래스나 Runtime.exec() 메서드를 사용하여 간단하게 수행할 수 있습니다. 또한, Apache Commons Exec와 같은 외부 라이브러리를 사용하여 더 많은 기능을 제공받을 수도 있습니다.

1. ProcessBuilder 클래스 사용하기

ProcessBuilder 클래스를 사용하면 명령어를 실행할 때 다양한 설정을 할 수 있습니다. 아래는 간단한 예제 코드입니다.

import java.io.IOException;

public class ProcessBuilderExample {
    public static void main(String[] args) {
        ProcessBuilder processBuilder = new ProcessBuilder("ls", "-l");
        try {
            Process process = processBuilder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. Runtime.exec() 메서드 사용하기

Runtime.exec() 메서드는 간단한 명령을 실행할 때 사용할 수 있습니다.

import java.io.IOException;

public class RuntimeExecExample {
    public static void main(String[] args) {
        try {
            Process process = Runtime.getRuntime().exec("ls -l");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Runtime.exec() 메서드를 사용할 때는 명령을 하나의 문자열로 전달해야 합니다.

3. 외부 라이브러리 사용하기

Apache Commons Exec 라이브러리는 명령어 실행에 더 많은 기능을 제공합니다. 다양한 설정과 출력 처리 등을 보다 쉽게 할 수 있습니다.

메이븐을 사용한다면 아래와 같이 의존성을 추가하여 사용할 수 있습니다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-exec</artifactId>
    <version>1.3</version>
</dependency>

여기서는 ProcessBuilderRuntime.exec()만을 다루었지만, 복잡한 시스템 호출을 위해서는 외부 라이브러리 사용을 고려해볼 만 합니다.

자바에서 유닉스/리눅스 시스템 호출을 하는 방법에 대한 간략한 소개였습니다. 부가적인 설정이나 출력 처리 등을 고려해야 할 때는 외부 라이브러리를 사용해도 좋은 선택지가 될 수 있습니다.