2012-03-08 3 views
0

"jps"명령을 실행하고 모든 JVM을보고 JPS 명령의 출력에서 ​​해당 ID를 추출하여 특정 JVM을 종료하는 Java 프로그램을 작성했습니다. 그것은 우분투 터미널에서 실행할 때 잘 작동합니다. 그런 다음 다른 머신에서 해당 머신을 ssh하고이 프로그램을 실행하기 위해 bash에 스크립트를 작성했습니다. Java 프로그램이 실행되지만 bash 스크립트에서는 실행되지 않습니다.

ssh $host "java -cp daemon.jar JVMname;" 

지금 여기에 문제가 온다.

Exception in thread "main" java.io.IOException: Cannot run program "jps": error=2, No  such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at runtime.daemon.halt.main(halt.java:19) 
Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021) 

내가 직접 컴퓨터에 가서이 동일한 명령을 실행하면. 나는 exec 해결책으로 바꾸고 싶지 않다.

어떤 아이디어 감사

+2

이 상호 작용이 질문에 중복 (이다 (이것은 대부분의 다른 쉘은 로그인 쉘과 비 로그인 쉘 초기화 파일 사이에 유사한 차이가 있지만. 당신이 쉘 떠들썩한 파티를 사용하는 가정합니다) 쉘) : http://stackoverflow.com/questions/940533/how-do-i-set-path-such-that-ssh-userhost-command-works – nwinkler

+1

원격 서버의'~ /. bashrc' 파일? – nwinkler

답변

2

이 자바 문제 자체 아니라, 두 경우 모두에서 사용자 환경의 차이까지입니다. 특히 대화식으로 실행하면 $PATH 변수에는 jps 디렉토리가 포함되지만 후자의 경우에는 SSH를 사용하지 않습니다.

는 원격 시스템에 .bash_profile.bashrc 파일에서보세요 - 나는 경로가 하나의 실행 예 : SSH 호출로 (비 로그인 쉘에 대해 실행되지 않는 .bash_profile 파일에 설정됩니다 의심 명령). .bashrc에 경로를 올바르게 설정하면 현재 호출이 시작됩니다.

+0

답장을 보내 주셔서 감사합니다. .bashrc가 설정되어 있지만 .bash_profile이 설정되어 있지 않습니다. 나는 그것이 무엇이든 할 것이라고 확신하지 못합니다. 하지만 당신은 올바르게 지적했습니다. 표준 새 번역 :이 -bash-3.2 $ SSH를 연산 0-8 "PWD" /export/home2/shujaat.hussain -bash-3.2 $ SSH를 연산 0-8 "표준 새 번역" 떠들썩한 파티를 실행 : 명령을 찾을 수 없습니다. 그래서 jps는 실행되지 않았지만 sshed는 정상적으로 실행됩니다. 없어진 물건 있어요? – shujaat

+2

내가 링크 된 질문을 살펴보면 어떤 파일이 비대화 형 쉘 (ssh)에서 실행되는지 설명합니다 : http://stackoverflow.com/questions/940533/how-do-i-set-path-such- that-ssh-userhost-command-works – nwinkler

+0

감사합니다. @nwinkler. 나는 당신이 준 링크로 문제를 알았음에도 불구하고 여전히 조금 어려움을 겪고있다. 나는 경로를 비 대화 적으로 반복했고 $ PATH는 대화 형 터미널에서 작업하는 것과 같지 않았습니다. 정상적인 SSH는 경로가 훨씬 길어지는 것을 보여줍니다. 어떻게하면 전체 경로를 내보낼 수 있는지 어떤 생각. 문제는 "jps"cant는 전체 경로를 내보낼 수없는 경우 실행되며 현재는 일반적으로 ssh 할 때만 발생합니다. 감사 – shujaat