2016-10-07 6 views
0

다음 ssh 명령은 터미널로 반환하지 않습니다. 실행이 완료 되더라도 중지됩니다. echo hi 명령을 실행하면 실행이 중단됩니다.실행 후 ssh가 반환되지 않습니다.

ssh [email protected] "echo hello;source .profile;source .bash_profile;/apps/myapp/deploytools/ciInstallAndRun.sh; echo hi" 

출력

hello 
<outoutfrom remote script" 
hi 

ciInstallAndRun.sh

echo 'starting' 
cd /apps/myapp/current 
./tctl kill 
cd /apps/myapp 

mv myapp_v1.0 "myapp_v1.0_`date '+%Y%m%d%H%M'`" 
unzip -o /apps/myapp/myappdist-bin.zip 
java -classpath .:/apps/myapp/deploytools/cleanup.jar se.telenor.project.cleanup.Cleanup /apps/myapp myapp_v1.0_ 3 
cd /apps/myapp/myapp_v1.0 
echo 'Done with deploy' 
chmod -R 775 * 
echo 'Done' 

./tctl start test 

소스 OS : 레드햇 신지 OS : 솔라리스 10 8/07

어떤 생각이 문제를 해결합니다.

+0

수정 내용? 여기서 어떤 부분이 작동하지 않습니까? 당신은 어떤 결과물을 기대합니까? – tripleee

+0

@ tripleee. 죄송합니다. ssh 명령은 터미널로 리턴하지 않습니다. 실행이 완료 되더라도 중지됩니다. 도와 주시겠습니까? – Patan

+0

그래서'echo hi' 후에 멈 춥니 다? 자급 자족하도록 질문을 편집하십시오. – tripleee

답변

3

이 문제를 해결할 수있는 아이디어.

설치 스크립트가 하위 프로세스를 생성했습니다.

echo hi 앞에 ps -f 또는 ptree $$ 명령을 추가하십시오. 설치 스크립트에 의해 생성 된 자식 프로세스 또는 여러 자식 프로세스가 표시됩니다.

SSH 명령이 멈추는 것을 막으려면 터미널 프로세스의 입력/출력에서 ​​이러한 자식 프로세스를 분리해야합니다. 스크립트 출력을 stdoutstderr, > /some/output/file 2>&1 모두 < /dev/null으로 리디렉션하는 파일로 보낼 수 있습니다.

또는 nohup 명령을 사용할 수 있습니다.

다른 사람이 언급 한대로, MCVE를 제공하지 않은,하지만 귀하의 질문에 당신이 당신의 설치 스크립트에서 예상되는 출력을 볼 수 있음을 의미하기 때문에이 가능성이 당신이 스크립트를 설치에 문제가있는 명령입니다

./tctl start test 

다음과 같이 바꾸는 것이 좋습니다.

./tctl start test </dev/null >/some/log/file/path.log 2>&1 
+0

감사합니다. 이로 인해 문제가 해결되었습니다. – Patan