728x90
반응형
Process
1) 패키지: java.lang.process
2) 명령어를 스트링으로 받아 서버(리눅스.윈도우)에서 실행
Command
1) 리눅스의 경우 "/bin/sh", "-c" 선입력 필요
2) 명령어는 String 고정배열에 담아 처리
주의사항
1) cp mv 등의 명령어는 폴더가 미리 생성되어있어야 함
2) 명령어별 허용되는 옵션에 대한 분기처리 필요
샘플소스
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayLisy;
public class LinuxCommandExecution {
public static void main(String[] args) {
try {
// 명령어 실행
String prefix = "/bin/sh";
String prefix2 = "-c";
String listAll = "ls -al";
List<String> cmdList = new ArrayList<>();
cmdList.add(prefix);
cmdList.add(prefix2);
cmdList.add(listAll);
String[] cmd = cmdList.toArray(new String[cmdList.size()]);
Process process = Runtime.getRuntime().exec(cmd);
// 실행 결과 출력
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "EUC-KR"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 에러 출력
BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream(), "EUC-KR"));
String errorLine;
while ((errorLine = errorReader.readLine()) != null) {
System.err.println(errorLine);
}
// 프로세스 종료 대기
int exitCode = process.waitFor();
System.out.println("Exit Code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
728x90
반응형
'백엔드 > 자바' 카테고리의 다른 글
[BE/Java] Stream.map().collect() 개념 및 샘플코드 (0) | 2023.07.22 |
---|---|
[BE/Java] Stream.of()를 사용한 값체크 샘플코드 (0) | 2023.07.20 |
[BE/JAVA] Reflection 개발방법 개념 및 샘플코드 (0) | 2023.05.02 |
[BE/JAVA] Stream.anyMatch().allMatch() (0) | 2023.04.23 |
[BE/JAVA] Stream.filter() (2) | 2022.06.08 |
댓글