[英]Whenever cron doesn't trigger backup
我正在嘗試將自動備份機制集成到Rails應用程序中,並決定使用備份 gem。 備份文件有效且可以手動成功運行,但是當我將其部署在VPS上時,它根本不是由cron運行的。 甚至日志文件都是空的。
schedule.rb:
every :day, :at => '2:00 am' do
command "backup perform --trigger database_backup --config_file config/backup.rb --log-path log --tmp-path tmp",
:output => {:error => 'log/cron_backup_error.log', :standard => 'log/cron_backup.log'}
end
crontab -l
命令結果:
0 2 * * * /bin/bash -l -c 'backup perform --trigger database_backup --config_file config/backup.rb --log-path log --tmp-path tmp >> log/cron_backup.log 2>> log/cron_backup_error.log'
如果我在VPS上手動運行這2個命令中的任何一個,它將起作用,但是cron無法起作用。 所有其他計划任務也運行良好。
感謝您可以提供的任何幫助!
將此添加到schedule.rb的頂部
env :PATH, ENV['PATH']
這樣可以確保cron的路徑與您當前的路徑相同
嘗試使用此配置:
job_type :backup, "cd :path && bundle exec backup perform -t database_backup -c config/backup/config.rb -l tmp/backup/log -d tmp/backup/data --tmp-path=tmp/backup/tmp --cache-path=tmp/backup/cache" every :day, :at => '2:00 am' do backup "" end
如果使用rvm:
job_type :backup, "cd :path && rvm 1.9.3 do bundle exec backup perform -t database_backup -c config/backup/config.rb -l tmp/backup/log -d tmp/backup/data --tmp-path=tmp/backup/tmp --cache-path=tmp/backup/cache"
追趕:
$ whenever -w
嘗試使用gem backup-rails 。
您如何在服務器上運行以更新crontab? 您是否正在使用Capistrano進行部署?
如果您使用的是Capistrano,則您的deploy.rb中應該包含以下內容:
set :whenever_command, "bundle exec whenever"
require "whenever/capistrano"
如果您手動執行此操作,請確保通過捆綁程序運行它:
bundle exec whenever ...
您應該在每次作業時將環境變量設置為以下內容:
whenever --update-crontab app_name --set environment=production
或者,您可以在您的whenever腳本中執行此操作:
set :environment, 'production'
或按工作:
every :day, :at => '2:00 am' do
command "...", :output => { args_removed }, :environment => 'production'
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.