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초 전에 실행하는 것은 데이터베이스를 너무 많이 신뢰하는 것입니다. 개인적으로 나는 완료하는 데 몇 초를 더 주고 싶습니다(그렇지 않으면 내일의 데이터가 계속 덤프됩니다).