리눅스에서 java 외부명령어 실행문제에 대해서 도움좀바랍니다.
뽀야
java tool 일 jps를 이용해 pid 값을 찾아 실행시킨 process를 찾아 종료하는 것입니다.
unix shell로 사용할떄는 잘되었는데 이번에 linux환경에서하는데 계속 값을 못찾고있습니다.
public static string getpid() throws ioexception, interruptedexception {
vectorstring commands = new vectorstring();
commands.add(/bin/sh);
commands.add(-c);
commands.add(jps -mlvv|grep \test\ );
system.out.println(commands);
processbuilder pb = new processbuilder(commands);
process pr = pb.start();
pr.waitfor();
if (pr.exitvalue() == 0) {
bufferedreader outreader = new bufferedreader(
new inputstreamreader(pr.getinputstream()));
return outreader.readline().trim();
} else {
system.out.println(error while getting pid);
return ;
}
}
runtiem.getruntime().exec를 이용할 경우는 jps 명령까지는 찍혔습니다.
string [] cmd ={/bin/sh -c jps -mlvv|grep \test\ };
이런식으로 명령을 주었는데 왜 jps까지만 먼저인식해서 process를 동작시키는지 모르겠습니다.
런타임프로세스를 이용할때 제가 이 위에적은것보다 정확하게 쓰는방법을 알고싶습니다.
test라는 process를 jps를 통해 찾아오는것인데 찾지못하고 계속 error while getting pid 가 나옵니다.
말 그대로 값을 찾지못하고있습니다.
java 외부 명령어 실행시 지금 제가한것에서 어떤점이 문제점인지좀 콕 찝어주시고
앞으로는 어떻게 해야할지좀 부탁드립니다.
조금더 추가하자면 프로그램을 돌리는곳은 리눅스(레드헷)버전으로 깔려있는곳에서 구동합니다.
자바 버전을 검색하면 1.4로 나오는데 이것때문에 제가 따로 자바1.6을 설치해두었습니다.
자바1.6이 있는 경로를잡고서 실행하기는하는데 혹시 프로세서빌드가 1.5버전 위에서부터 된다고알고있는데
레드헷에 깔려있는 자바랑 문제가 생길가능성도 있는지요 그리고 이방법 말고 runtiem.getruntime().exec를
이용해서 해보았는데 위에 말한것처럼 jps 명령을 주었을떄처럼 제가원하는거만 뽑아서 나오는게 아니라
jsp 명령으로 인한 process 목록들이 출력됩니다.