簡體   English   中英

只要cron不觸發備份

[英]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的路徑與您當前的路徑相同

  1. 嘗試使用此配置:

     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 
  2. 嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM