我有一个capistrano任务,可以在多台服务器上重启后台作业。有时,该作业将在服务器上死亡,因此重置命令将失败,因为作业未运行。在这种情况下,我想调用我的启动任务(而不是重启任务)。这是我的尝试:
namespace :job do
desc "Restart the job"
task :restart, :roles => :app do
output = nil
begin
run "sudo restart myjob DEPLOY=true NAME='myjob1'" do |channel, stream, data|
output = data
end
rescue Capistrano::CommandError => error
if output.match("restart: Unknown instance: myjob")
puts "****** WARNING ***** job was not running -- starting it"
start
else
puts "some other unknown error, die"
raise error
end
end
end
desc "Start the job"
task :start, :roles => :app do
run "sudo start myjob DEPLOY=true NAME='myjob1'"
end
end
我上面所做的问题是,当我调用“start”时,它将在所有服务器上运行启动任务,当我只希望它在死亡的服务器上运行时。也许我可以以某种方式将主机传递给start命令?一直未能找到如何。欢呼声。