以下ssh命令不会返回终端。虽然执行完成但它会挂起。执行echo hi命令后挂起。
ssh user@testserver "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
源操作系统:Redhat Dest Os:Solaris 10 8/07
有任何想法解决这个问题。
答案 0 :(得分:3)
任何想法都可以解决这个问题。
您的安装脚本已生成子进程。
在ps -f
之前添加echo hi
或ptree $$
命令。您将看到安装脚本生成的子进程或多个子进程。
要停止SSH命令挂起,您需要从终端的输入/输出中分离此类子进程。您可以将脚本的输出转发到文件 - stdout
和stderr
> /some/output/file 2>&1
,也将其输入重定向到{{1} }。
或者您可以使用nohup
命令。
您还没有像其他人所说的那样提供过MCVE,但这可能是您安装脚本中的问题命令,因为您的问题意味着您会看到安装脚本的预期输出:
< /dev/null
你最好用以下代码替换它:
./tctl start test