728x90
반응형

Runtime 클래스를 이용한 외부파일 실행

개발 업무를 진행하다 보면 특정 배치 모듈이나 버튼을 웹에서 눌렀을때 데몬등이 수행되게 해달라는 요청이 들어올때가 있다.

이때 간단하게 Runtime클래스를 사용하여 외부파일을 실행할수있다.

아래와 같이 커맨드를 인자로 하고 exec() 메서드를 수행하면 외부파일이 실행된다.


1
2
3
4
5
6
7
8
9
10
11
12
  public class {
    public static void main(String arg[]) {
            String[] cmd = new String[2];
             cmd[0] = "sh";
             cmd[1] = "/usr/local/bin/start.sh";
 
           Process p = Runtime.getRuntime().exec(cmd);
    }
  }


몇가지 주의할점이 있다면 외부인자를 받아서 (예: request에 명령어를 담는다던가) 하는 프로그램을 작성하게되면 보안상 취약해질수있으므로 명령커맨드는 하드코딩이나 별도 설정파일로 따로 관리하도록 해야하며 현재 프로그램이 수행중인 

시스템계정으로 작동하기 때문에 리눅스나 유닉스같이 권한에 대한 관리를 하는 OS의 경우 권한이 맞지않으면 

예외가 발생할 수 있다. 

추가로  exec() 메서드의 리턴 타입은 Process 인데 이 를 활용하여 출력된 스트림을 가져올수도 있고 여러가지 

처리가 가능하다.

 

728x90
반응형

+ Recent posts