728x90
반응형
Java 프로그램이 OS내 자원을 주기적으로 관리해야 하는 요구사항이 생겼다.
이에 해당 요구사항 구현을 위해 구글링을 해본 결과 ProcessBuilder를 사용하는 것이 간편해보여 이를 통해 구현을 완료했고, 언제든 사용할 수 있도록 해당 내용을 저장하고자 한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
=
@Service
public class SomeService {
Logger logger = LoggerFactory.getLogger(SomeService.class);
public void runCommand(String userId) throws Exception {
// StringBuffer를 통해 OS에 전달할 메시지 작성
StringBuffer command = new StringBuffer();
command.append("...");
command.append("...");
command.append("...");
// bash -c 이후 해당 명령어가 올 수 있도록 리스트 구성
String[] commandList = new String[] { "bash", "-c", command.toString() };
// 명령어 실행
runLinuxCommand(commandList);
}
public void runLinuxCommand(String[] commandList) throws Exception {
logger.debug(" @@@ OS Command Start : " + commandList[2]);
ProcessBuilder processBuilder = new ProcessBuilder(commandList);
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
logger.debug(" @@@ OS Command Result : " + line);
}
int exitCode = process.waitFor();
logger.debug(" @@@ OS Result : {}" + exitCode);
}
}
728x90
반응형
'언어 > JAVA' 카테고리의 다른 글
1970년 01월 01일 00시 00분 00초 (0) | 2023.03.17 |
---|---|
JDBC 사용법 (0) | 2022.07.25 |
[JAVA] 온점 단위 Split (0) | 2022.03.10 |
[JAVA] Call by Value & Call by reference (0) | 2021.04.29 |
[JAVA] == vs equals vs hashCode (0) | 2021.03.30 |