2012-04-21 4 views
0

안녕하세요 나는 하나 개의 IP 주소에 SSH 및 나는이 방법ssh를 -ing와

ssh $LINE java -Djava.library.path=/N/u/sbpatil/ds/Project4/demons/Project4Lib -cp "/N/u/sbpatil/ds/Project4/demons:/N/u/sbpatil/ds/Project4/demons/Project4Lib/jug-uuid.jar:/N/u/sbpatil/ds/Project4/demons/Project4Lib/NaradaBrokering.jar:/N/u/sbpatil/ds/Project4/demons/Project4Lib/sigar.jar" PublisherClient >> output2 & 

하지만 출력 2 파일이 어떠한 출력이 없습니다 그것을 할 쉘 스크립트 을 통해 내 자바 코드를 실행하는 데 필요한 자바 프로그램을 컴파일. java의 실행 명령에서 오류가 발생하더라도 오류는 해당 파일에 기록되어야하지만 기록되지는 않습니다. 누구든지이 스크립트를 어떻게 작성해야합니까?

+0

한 줄로 모든 것을 수행하는 대신 원격 시스템에 처음 ssh-login 한 다음 java 명령을 시작할 수 있습니까? 디버깅이 쉬워지면 명령의 어느 부분이 어떤 컴퓨터에서 발생하는지 명확하게 알 수 있습니다 (예 : 그'>>'가 원격 기계에서 실행되는지 아니면 당신의 컴퓨터에서 수행되는지는 모르겠습니다 ... – cello

+1

마지막 &; 앞에 2> & 1과 같은 작업을하지 않으면 오류가 출력 파일에 기록되지 않습니다. 그렇지 않으면 output2에는 표준 출력 만 포함됩니다. – Richante

+0

실제로 파일이 공유 파일 시스템이 너무 >> 명령은 모든 노드에 파일에 액세스 할 수 있도록 것입니다 .. –

답변

2

이제 백그라운드에서 ssh를 실행하여 출력을 로컬 파일로 리디렉션하는 것처럼 보입니다. 명령 줄을 ''에 포함하십시오.

또한 nohup을 사용하면 이와 같은 앱을 실행하는 것이 좋습니다.

+0

제게 2> & 1 & thanks의 의미를 말해 주시겠습니까 !! –

+0

2> & 1은 STDERR (Java의 System.err, 예를 들어 스택 트레이스가 기본적으로 인쇄되는 곳)을 STDOUT (보통 인쇄하는 System.out)으로 리디렉션합니다. 따라서'2> & 1'을 실행하면 동일한 파일에서 가능한 모든 출력을 포착 할 수 있습니다. 분명히 다른 파일에 쓸 수 있지만, 일반적으로 백그라운드 프로세스를 시작할 때 둘 다 리디렉션하는 것이 좋습니다. –