Whenever: 毎月の仕事の日を指定する

作成日 2009年06月18日  ·  13コメント  ·  ソース: javan/whenever

毎月のcronjobで時間を設定しようとすると、「1.month」を使用する必要がありました。
しかし、これにより、毎月、今日の日にcronジョブが作成されました。

0 9 18 * * .....の代わりに
0 9 1 * * .....月の初日に発火します。..

最も参考になるコメント

完全な日付を指定したくない場合は、次のようなものを試すことができます。

1.月ごと、:at =>「月の初めの午前9時」
これにより、意図した「0 9 1 **」が生成されます。 それはまたあなたのコードを少しきれいに保ちます:)

それがお役に立てば幸いです。

-AP

全てのコメント13件

そこにすべてのcron出力を表示していますか? 最初の例では、時間の場所が9、日が18です。

 #.----------------分(0-59) 
 #| .-------------時間(0-23)
 #| | .----------月の日(1〜31)
 #| | | .-------月(1〜12)またはjan、feb、mar、apr..。 
 #| | | | .----曜日(0〜6)(日曜日= 0または7)またはsun、mon、tue、wed、thu、fri、sat 
 #| | | | |
 #* * * **実行するコマンド

いいえ、完全な出力は次のとおりです。

0 9 18 * * command

schedule.rbファイルを貼り付けることができますか? 何かがおかしいようです。

every 1.month, :at => "9 AM" do
  command "..."
end

ああ、私は問題があります(私がこの分野で良いドキュメントを持っていないことを除いて)。 1.monthで:atを使用すると、日、時、分が時刻から解析されます。 したがって、午前9時のような時間を使用する場合、それはあなたが意味する日が今日であると想定します。

これを修正する1つの方法は、完全な日付を指定することです。 これは見苦しいように見えますが、機能するはずです:1か月ごと、:at =>「1月1日午前9時」

「1月」は無視されますが、解析を成功させるために必要です(日付と時刻の解析に慢性宝石を使用する場合は常に)。

それがお役に立てば幸いです。

NS

完全な日付を指定したくない場合は、次のようなものを試すことができます。

1.月ごと、:at =>「月の初めの午前9時」
これにより、意図した「0 9 1 **」が生成されます。 それはまたあなたのコードを少しきれいに保ちます:)

それがお役に立てば幸いです。

-AP

Javanに感謝します。

あなたが言ったように、それは見栄えが良くありませんが、それはうまくいきます!

tsommer ...私が投稿した上記のソリューションは機能するはずです。 あなたがそれを見たかどうかはわかりません。

「月の初めの午前9時」-そのルール! ありがとう。

このcronジョブ「00 27-31 **」を表現する必要があります。 現在の構文で可能ですか?

DSLに別のメソッドを提供して、通常のcron構文でcronジョブを渡す方がよいかもしれません。

 cron "0 0 27-31 * *" do
 #..。
終わり

生の構文オプションがいいと思います(パッチは大歓迎です!)。 それまでの間、Rubyを少し使用してこれを行うことができます。

every 1.month, :at => (27..31).to_a.map { |d| "12am January #{d}" } do
  command "..."
end

Javanは迅速な対応に感謝します。
現在、次のパッチを使用しています。 正規表現にはいくつかの改善が必要かもしれませんが、今はうまくいきます。

 class Whenever :: Output :: Cron
 CRON_EXP = / [^ \ s] + \ s [^ \ s +] \ s [^ \ s] + \ s [^ \ s] + \ s [^ \ s] + /

 def time_in_cron_syntax
 ケース@time
 CRON_EXPの場合は@time
 シンボルの場合はparse_symbol
 文字列の場合はparse_as_string
 そうでなければparse_time
 終わり
 終わり
終わり

それから私はすることができます:

 '0 0 27-31 **'ごとに
 ..。
終わり

2か月ごと、1日の終わり(31日)、午後11時59分にcronを作成するにはどうすればよいですか?
2か月ごと、59 11 L * 0

このページは役に立ちましたか?
0 / 5 - 0 評価