実現したいこと
システムがUTC環境、RailsがJST環境でcronを月初に動かす。
前提
Aws(ubuntu) + Railsでシステムを構築しており、AwsはUTCで、RailsはJstで動いています。
すでにシステムがこの状態ある程度稼働してしまっており、システム上よくないとはわかっているのですが、「システムのタイムゾーンの変更は避けたい」と考えております。
RailsはWheneverを使ってcronを設定しております。
システムUTC、RailsがJSTの都合以下のように毎月1日の10時30分に動くように設定を行い
every :month, :on => '1th', :at => jst('10:30') do
command "cd /home/ubuntu/project_name/current;RAILS_ENV=production bundle exec rails runner scripts/monthry_cron.rb"
end
$ crontab -l
コマンドで確認すると
30 1 1 * * /bin/bash -l -c <以下省略
のように日本時間の9時間前で登録され、実際に設定した正しい時間(日本時間1日の10:30)にcronが動作します。
ここまでが前提であり、実際に設定したい時刻は「毎月1日の0時5分」と考えております。
シンプルにWheneverに記載すると以下のようになるのですが
every :month, :on => '1th', :at => jst('0:05') do
command "cd /home/ubuntu/project_name/current;RAILS_ENV=production bundle exec rails runner scripts/monthry_cron.rb"
end
このように書いた場合に実際に登録される値を
$ crontab -l
コマンドで確認すると
5 15 1 * * /bin/bash -l -c <以下省略
と登録され、このままだとJSTの2日の0時5分動くcronとなってしまいます。
この9時間ずれを保ったまま「毎月1日の0時5分」にcronを動作させる方法を知りたくこちらに質問させていただきました。
ご教示いただけますと幸いです。
よろしくお願いいたします。
0 コメント