我發現,無論什麼時候添加cron作業crontab文件,由包含路徑Capistrano的註釋行分隔每個cron作業釋放目錄......是這樣的:
# Begin Whenever generated tasks for: /home/path/www/to/releases/2070527160502/config/schedule.rb
(您可以用crontab -e查看原始crontab文件,以查看每次放入該文件後的內容)
當發生下一次部署時,每當看到是否有以註釋分隔的cron作業,但使用新的版本號。它沒有發現,所以它將新作業追加到crontab文件。
我對這個問題的解決方法是指定update_crontab任務deploy.rb與明確的路徑schedule.rb這樣的:
namespace :deploy do
task :update_crontab do
on roles(:all) do
within current_path do
execute :bundle, :exec, :whenever, "--update-crontab", "~/path/to/current/config/schedule.rb"
end
end
end
end
after 'deploy:symlink:release', 'deploy:update_crontab'
所以在crontab文件註釋分隔符包含「當前」路徑而不是'releases/nnnnnnnnnnn'路徑。
我懷疑這不應該是必要的,但在嘗試解決問題一段時間後,這就是我最終得到的結果。
是的,它應該覆蓋它們。你能否提供一些可能幫助我們診斷問題的更多信息?你的'schedule.rb'中有什麼? 「crontab」中有什麼?你有任何不尋常的部署代碼?如果你清空'crontab'並在乾淨的系統上重新部署會發生什麼? ....... –
schdule.rb定義了8個簡單的條目,每天運行一次命令。例如'每隔一天做<一些ruby命令>結束' 我清除了crontab並觸發了兩次部署。它添加了兩次cron條目。 – Sid
請編輯原文,並附實際代碼。 (如果它包含敏感信息,只要意義沒有丟失,就可以使用僞數據進行編輯。) –