4시간에서 1초마다 cronjob을 실행하는 방법

4시간에서 1초마다 cronjob을 실행하는 방법

API의 데이터가 있는데 이를 호출하여 4시간마다 내 데이터베이스에 데이터(현재 날짜의 데이터)를 덤프하고 싶습니다. 나는 다음을 사용했습니다 :

0   */4 *   *   *

내 보고서의 데이터에 일부 값이 누락되었습니다. cronjob이 다음과 같이 호출되는 것 같습니다.

today       00:00:00  -> should return nothing for today results
today       04:00:00  -> should return data for today
              ....
today       20:00:00  -> should return data for today
tomorrow    24:00:00  -> should return data for today, but this is tomorrow !

이제 나는 이것을 이렇게 부르고 싶습니다.

today       00:00:00  -> should return nothing for today results
today       03:59:59  -> should return data for today
              ....
today       19:59:59  -> should return data for today
tomorrow    23:59:59  -> should return data for today, but this is tomorrow !

이 cronjob을 구현할 수 없습니다. 아니면 더 좋은 방법이 있나요?

답변1

crontab에서는 초와 음수 시간을 사용할 수 없습니다. 이전 시간의 59분에서 59초만 기다리세요. 예 크론탭:

#
# minute  0-59
# hour    0-23
# dom     1-31
# mon     1-12 (or names)
# dow     0-7  (0 or 7 is Sun, or use names)
#
59 23,3,7,11,15,19 * * * sleep 59 && /bin/datadump

답변2

안타깝게도 cron산술보다는 패턴 인식에 더 중점을 두고 설계되었으므로 이와 같은 기능은 -1 0 /4 * * *작동하지 않습니다. 쉼표를 사용하여 각 시간을 수동으로 지정할 수 있으므로 원하는 결과를 얻을 수 있습니다.

59 59 3,7,11,15,19,23 * * *

하지만 시간이 되기 1초 전에 실행하는 것은 데이터베이스를 너무 많이 신뢰하는 것입니다. 개인적으로 나는 완료하는 데 몇 초를 더 주고 싶습니다(그렇지 않으면 내일의 데이터가 계속 덤프됩니다).

관련 정보