IT/개발

IT, 개발/JAVAJAVA 명령어 실행 & 실행 후 결과 받아오기(명령어 2개 이상 사용하기)

알콩달콩아빠 2023. 8. 17. 19:50
728x90
반응형

자바로 프로그램을 개발하다 보면 프로그램 내에서 터미널 명령어를 실행해야 할 경우도 있고, 명령어 실행 결과를 가져와서 그 값을 사용해야 하는 경우도 있습니다.

그럴 때 사용할 수 있는 소스를 알아보도록 하겠습니다.



1. 명령어만 실행

    // cmd 변수에 명령어 입력 
    String cmd = "java -jar test.jar";

    try 
    {
        new ProcessBuilder("/bin/sh", "-c", cmd).start();
    } 
    catch (IOException e) 
    {
    }

 

문자열로 명령어를 입력하여 실행할 때 두 개 이상의 명령어를 사용하고 싶다면 구분자로 나눠서 입력합니다.

다중 명령어를 간단하게 살펴보겠습니다.

1) ;

String cmd = "java -jar test1.jar;java -jar test2.jar;java -jar test3.jar"

순차적으로 명령어를 실행하고 성공/실패 여부와 상관없이 모든 명령어를 실행합니다.

2) &&

String cmd = "java -jar test1.jar&&java -jar test2.jar&&java -jar test3.jar"

순차적으로 명령어를 실행하면서 실패하는 경우 발생 시 그 뒤의 모든 내용은 실행하지 않습니다. 

앞에 명령어가 성공해야만 그 뒤 명령어를 실행합니다.

3) ||

String cmd = "java -jar test1.jar||java -jar test2.jar||java -jar test3.jar"

순차적으로 명령어를 실행하면서 성공하는 경우 발생 시 그 뒤의 모든 내용은 실행하지 않습니다.

앞의 명령어가 실패해야 그 뒤 명령어를 실행합니다. 하나만 성공하면 끝나는 것입니다.


 

2. 명령어 실행하고 결과값 받기 

    // cmd 변수에 명령어 입력 
    String cmd = "ps -ef | grep java";
    String[] command = {"/bin/sh","-c",cmd};

    try 
    {
        Process process = Runtime.getRuntime().exec(command);
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line = null;
        StringBuffer sb = new StringBuffer();
       
        while ((line = reader.readLine()) != null) 
        {
            sb.append(line);
        }
     } 
    catch (Exception e) 
    {     
    
    }

 

StringBuffer에 결과를 담아서 그 값을 사용하면 됩니다.

 

받는 결과가 하나라면 String으로 바로 사용하지만 

여러 내용을 받아서 사용하고자 한다면 List나 배열을 사용하는 것도 좋은 방법입니다.

 

readLine 하는 곳에서 자신의 사용 용도에 맞게 수정하면서 사용해보시기 바랍니다.

출처 : JAVA 명령어 실행 & 실행 후 결과 받아오기(명령어 2개 이상 사용하기) (tistory.com)

728x90
반응형