好吧,所以,我在网上四处查看,看起来并没有很多其他人有这个问题,但也许我们正在做的事情有其他问题。
我已经设法将其提炼成我认为有用的测试用例:
配置/部署.rb:
## Excerpt
task :big_delay, :roles => :web do
run "sleep 480"
run "echo Meow Meow Meow"
end
还有愚蠢的脚本.sh:
#!/bin/sh
ssh foo 'sleep 480; echo Meow Meow Meow'
其中 foo 是我们部署到的同一服务器的名称。
当我运行这两个时,它应该连接到另一个框,8 分钟内什么都不做,然后吐出一些无用的文本并完成。
愚蠢的脚本有效,上限任务失败。我看到远程命令以 ps xf 结束,但 cap 似乎不再注意到了。如果 sleep 是 20 而不是 240,则 cap 任务可以正常工作。
显然这个任务是超级没用的,但我们确实在部署时运行了昂贵的东西来触发这个,我已经这样做了,以排除对 ssh 的任何指责。
另一个数据点,如果我们 ssh 进入盒子并将代码放在那里,然后从那里运行 cap deploy,那么它工作正常。
所以......似乎在 ssh 和 capistrano 之间发生了一些奇怪的相互作用。想法?