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
반응형
'IT > 개발' 카테고리의 다른 글
[NM7] grep과 awk를 이용한 nonmem의 xml 파일에서 결과값 추출하기 (0) | 2023.08.17 |
---|---|
[Java] Linux 명령 날리고 결과 값 리턴 받기 (0) | 2023.08.17 |
Windows SQL Server 스크립트 생성 및 백업 알아보기 (0) | 2023.06.26 |
Postman 을 버리고 Thunder Client (0) | 2023.06.26 |
[VS Code] 💽 Thunder Client (Postman 대신 이거 쓰자!) (0) | 2023.06.26 |