我有一个ant构建脚本,它连接到远程服务器并使用ssheexec启动本地构建。这个构建大约需要1分钟,当它完成时,它会给我发一封电子邮件,但是我的任务是:
<sshexec
host="${deploy.host}"
username="${deploy.username}"
trust="true"
keyfile="${user.home}/.ssh/id_rsa"
command="~/updateGit.sh"/>
将等待直到脚本完成。我尝试通过&
这样(我假设我必须在build.xml中转义它):
<sshexec
host="${deploy.host}"
username="${deploy.username}"
trust="true"
keyfile="${user.home}/.ssh/id_rsa"
command="~/updateGit.sh &"/>
但这似乎没有什么不同。如果这些额外的细节对任何人有所帮助,脚本生成大量输出,并且缓慢的互联网连接可能导致脚本花费更长的时间(因为它的输出是通过管道返回的,使用这种方法的假设是我只关心完成后的输出,所以如果我将其打包到电子邮件中,我可以在构建开始时监视我的收件箱,基本上这是一个穷人的持续集成)
使用来自此回答(和nohup
命令)的信息,我更新了我的任务如下:
<sshexec
host="${deploy.host}"
username="${deploy.username}"
trust="true"
keyfile="${user.home}/.ssh/id_rsa"
command="nohup ~/updateGit.sh > /dev/null 2> error.log < /dev/null &"/>