Whenever: 월별 μž‘μ—…μ˜ μš”μΌ 지정

에 λ§Œλ“  2009λ…„ 06μ›” 18일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: javan/whenever

월별 cronjob으둜 μ‹œκ°„μ„ μ„€μ •ν•˜λ €κ³  ν•  λ•Œ '1.month'λ₯Ό μ‚¬μš©ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ 이것은 맀월 였늘 λ‚ μ§œμ— λŒ€ν•œ cronjob을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.

0 9 18 * * .....λŒ€μ‹ μ—
0 9 1 * * ..... 맀월 1일에 μ‹€ν–‰λ©λ‹ˆλ‹€...

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

전체 λ‚ μ§œλ₯Ό μ œκ³΅ν•˜κ³  싢지 μ•Šλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

맀 1.month, :at => "μ›”μ΄ˆ μ˜€μ „ 9μ‹œ"
μ΄λ ‡κ²Œ ν•˜λ©΄ μ˜λ„ν•œ "0 9 1 * *"이 μƒμ„±λ©λ‹ˆλ‹€. λ˜ν•œ μ½”λ“œλ₯Ό 쑰금 더 κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•©λ‹ˆλ‹€. :)

도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

-AP

λͺ¨λ“  13 λŒ“κΈ€

거기에 λͺ¨λ“  cron 좜λ ₯을 ν‘œμ‹œν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 첫 번째 μ˜ˆμ—λŠ” μ‹œκ°„μ— 9κ°€ 있고 ν•˜λ£¨μ— 18이 μžˆμŠ΅λ‹ˆλ‹€.

 # .---------------- λΆ„(0 - 59) 
 # | .------------- μ‹œκ°„(0 - 23)
 # | | .---------- λ‚ μ§œ(1 - 31)
 # | | | .------- μ›”(1 - 12) λ˜λŠ” 1μ›”, 2μ›”, 3μ›”, 4μ›” ... 
 # | | | | .---- μš”μΌ(0 - 6) (μΌμš”μΌ=0 λ˜λŠ” 7) λ˜λŠ” 일, μ›”, ν™”, 수, λͺ©, 금, ν†  
 # | | | | |
 # * * * * * μ‹€ν–‰ν•  λͺ…λ Ή

μ•„λ‹ˆμš”, 전체 좜λ ₯은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

0 9 18 * * command

schedule.rb νŒŒμΌμ„ 뢙여넣을 수 μžˆμŠ΅λ‹ˆκΉŒ? λ­”κ°€ λ–¨μ–΄μ Έ 보인닀.

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

μ•„, λ¬Έμ œκ°€ λ³΄μž…λ‹ˆλ‹€(이 뢄야에 쒋은 λ¬Έμ„œκ°€ μ—†λŠ” 것 외에). 1.month와 ν•¨κ»˜ :at을 μ‚¬μš©ν•˜λ©΄ 일, μ‹œ, 뢄을 μ‹œκ°„μ—μ„œ ꡬ문 λΆ„μ„ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ˜€μ „ 9μ‹œμ™€ 같은 μ‹œκ°„μ„ μ‚¬μš©ν•˜λ©΄ μ˜λ―Έν•˜λŠ” λ‚ μ§œκ°€ 였늘이라고 κ°€μ •ν•©λ‹ˆλ‹€.

이λ₯Ό μˆ˜μ •ν•˜λŠ” ν•œ 가지 방법은 전체 λ‚ μ§œλ₯Ό μ§€μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” 이것이 보기 ν‰ν•˜λ‹€λŠ” 것을 μΈμ •ν•˜μ§€λ§Œ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€: 맀 1.month, :at => "1μ›” 1일 μ˜€μ „ 9μ‹œ"

"January"λ₯Ό λ¬΄μ‹œν•˜μ§€λ§Œ 성곡적인 ꡬ문 뢄석에 ν•„μš”ν•©λ‹ˆλ‹€(λ‚ μ§œ 및 μ‹œκ°„ ꡬ문 뢄석을 μœ„ν•΄ Chronic gem을 μ‚¬μš©ν•  λ•Œλ§ˆλ‹€).

도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

NS

전체 λ‚ μ§œλ₯Ό μ œκ³΅ν•˜κ³  싢지 μ•Šλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

맀 1.month, :at => "μ›”μ΄ˆ μ˜€μ „ 9μ‹œ"
μ΄λ ‡κ²Œ ν•˜λ©΄ μ˜λ„ν•œ "0 9 1 * *"이 μƒμ„±λ©λ‹ˆλ‹€. λ˜ν•œ μ½”λ“œλ₯Ό 쑰금 더 κΉ¨λ—ν•˜κ²Œ μœ μ§€ν•©λ‹ˆλ‹€. :)

도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

-AP

κ³ λ§ˆμ›Œ μžλ°”.

당신이 λ§ν–ˆλ“―μ΄, 그것은 잘 보이지 μ•Šμ§€λ§Œ μž‘λ™ν•©λ‹ˆλ‹€!

tsommer... λ‚΄κ°€ κ²Œμ‹œν•œ μœ„μ˜ μ†”λ£¨μ…˜μ΄ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ³΄μ…¨λŠ”μ§€ λͺ¨λ₯΄κ² λ„€μš”.

"μ˜€μ „ 9μ‹œμ— 이달 μ‹œμž‘" -- 이것이 κ·œμΉ™μž…λ‹ˆλ‹€! 감사 ν•΄μš”.

이 cron μž‘μ—…μ„ "0 0 27-31 * *"둜 ν‘œν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν˜„μž¬ ꡬ문으둜 κ°€λŠ₯ν•©λ‹ˆκΉŒ?

λ‹€μŒκ³Ό 같이 일반 cron ꡬ문으둜 cron μž‘μ—…μ„ μ „λ‹¬ν•˜κΈ° μœ„ν•΄ DSL에 λ‹€λ₯Έ 방법을 μ œκ³΅ν•˜λŠ” 것이 더 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

 cron "0 0 27-31 * *"
 # ...
 끝

λ‚˜λŠ” μ›μ‹œ ꡬ문 μ˜΅μ…˜μ΄ 쒋을 κ²ƒμ΄λΌλŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€(패치 ν™˜μ˜!). κ·Έ λ™μ•ˆ Rubyλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

Javan λΉ λ₯Έ 응닡에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.
ν˜„μž¬ λ‹€μŒ 패치λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ–΄μ©Œλ©΄ μ •κ·œ ν‘œν˜„μ‹μ— μ•½κ°„μ˜ κ°œμ„ μ΄ ν•„μš”ν•  μˆ˜λ„ μžˆμ§€λ§Œ μ§€κΈˆμ€ νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.

 클래슀 When::Output::Cron
 CRON_EXP = /[^\s]+\s[^\s+]\s[^\s]+\s[^\s]+\s[^\s]+/

 def time_in_cron_syntax
 μΌ€μ΄μŠ€ @μ‹œκ°„
 CRON_EXP일 λ•Œ @time
 기호 λ‹€μŒ parse_symbol λ•Œ
 λ¬Έμžμ—΄ λ‹€μŒ parse_as_string일 λ•Œ
 그렇지 μ•ŠμœΌλ©΄ parse_time
 끝
 끝
 끝

그러면 λ‚΄κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 λͺ¨λ“  '0 0 27-31 * *'
 ...
 끝

2 κ°œμ›”λ§ˆλ‹€ (31 일) μ˜€ν›„ 11μ‹œ 59뢄에 μ–΄λ–»κ²Œ μƒμ„±ν•©λ‹ˆκΉŒ
2κ°œμ›”λ§ˆλ‹€ 59 11 L * 0μ—μ„œ

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰