cronã®ä»çµã¿ â Linuxã®å®æå®è¡ã¯ã©ãåããŠããïŒ
cronã£ãŠããèããã©ãäœããããã®ãªã®ïŒ
cronã¯Unix/Linuxã«æšæºæèŒãããŠãããžã§ãã¹ã±ãžã¥ãŒã©ã ããããã¯ã°ã©ãŠã³ãã§ãã£ãšåããŠãããããŒã¢ã³ãã§ã決ãŸã£ãæéã«æ±ºãŸã£ãã³ãã³ããèªåã§å®è¡ããŠããããã ãäŸãã°ãæ¯æ3æã«ããŒã¿ããŒã¹ã®ããã¯ã¢ãããåãããšãã5åããšã«ãã°ãéèšããããšãã宿çãªã¿ã¹ã¯ã人éã®ä»£ããã«ãã£ãŠããããã ãã
å®è¡ããæéã£ãŠã©ããã£ãŠæå®ããã®ïŒ
crontabãšããèšå®ãã¡ã€ã«ã«æžããã ãã©ã5ã€ã®ãã£ãŒã«ãã§æéãæå®ããããå·ŠãããåïŒ0-59ïŒããæïŒ0-23ïŒããæ¥ïŒ1-31ïŒããæïŒ1-12ïŒããææ¥ïŒ0-7ïŒãã®é çªãäŸãã°ã30 3 * * *ããªãæ¯æ¥3æ30åãã0 */2 * * *ããªã2æéããšãã0 9 * * 1-5ããªãå¹³æ¥ã®9æã«å®è¡ãšããæå³ã ããã¢ã¹ã¿ãªã¹ã¯ * ã¯ãæ¯åããæå³ãããã
ãžããããããcronã¯è£åŽã§ã©ããã£ãŠåããŠãã®ïŒ
cronã®ããŒã¢ã³ïŒcrondïŒã¯ãå®ã¯ãããã·ã³ãã«ãªä»çµã¿ã ããæ¯å1åç®ãèŠãŸããŠãç»é²ãããŠããå šcrontabãšã³ããªã確èªãããçŸåšæå»ãšããããããšã³ããªãããã°ãåããã»ã¹ãforkããŠè©²åœã³ãã³ããå®è¡ãããã ãå®è¡ãçµãã£ãããã®ããã»ã¹ã¯çµäºãcronããŒã¢ã³èªäœã¯ãŸã次ã®1åãåŸ ã€ãã®ç¹°ãè¿ãã ãã
æ¯åãã§ãã¯ããŠããã ïŒèšå®ãã¡ã€ã«ã¯ã©ãã«ããã®ïŒ
倧ãã3çš®é¡ãããããŸããcrontab -eãã³ãã³ãã§ç·šéãããŠãŒã¶ãŒåå¥ã®crontabããã㯠/var/spool/cron/ 以äžã«ä¿åããããæ¬¡ã« /etc/cron.d/ ãã£ã¬ã¯ããªã«çœ®ãã·ã¹ãã 管ççšã®crontabããã㊠/etc/cron.daily/ ã /etc/cron.hourly/ ã®ãããªãã£ã¬ã¯ããªã«ã¹ã¯ãªããã眮ãã ãã§ãæ¥æ¬¡ã»æé次ã§å®è¡ããŠãããä»çµã¿ããããã ãçšéã«å¿ããŠäœ¿ãåããã®ããã€ã³ãã ãã
cronã§åãããã¹ã¯ãªãããããŸãåããªãããšãããã£ãŠèãããã©âŠ
ããããïŒäžçªå€ãã®ã¯PATHã®åé¡ã ããã¿ãŒããã«ã§æåå®è¡ãããšã㯠~/.bashrc ã§èšå®ãããPATHã䜿ãããã©ãcronã¯ã·ã§ã«ãçµç±ããªãããæå°éã®PATHããæã£ãŠããªããã ãã /usr/local/bin/python ãšãã«ãã¹ã§æžãããcrontabã®å é ã« PATH=/usr/local/bin:/usr/bin:/bin ãšæžãå¿ èŠãããããããšãcronã®æšæºåºåã¯ã¡ãŒã«ïŒsendmailïŒã«éããããããã¿ãŒããã«ã«ã¯äœã衚瀺ãããªãããã°ãã¡ã€ã«ã«ãªãã€ã¬ã¯ãããã®ãå®ç³ã ãã
æè¿ã¯cronã®ä»£ããã«ãªããã®ãããã®ïŒ
systemdã¿ã€ããŒãæåãªä»£æ¿ã ãã.timerãã¡ã€ã«ãš.serviceãã¡ã€ã«ã®ãã¢ã§å®çŸ©ãããã ãã©ãcronã«ã¯ãªãäŸ¿å©æ©èœãããããããããååã®å®è¡å®äºãã30ååŸãã®ãããªçžå¯Ÿæå®ãä»ã®ãµãŒãã¹ãšã®äŸåé¢ä¿ã®å®çŸ©ãå®è¡ãã°ã®journalctlã§ã®äžå 管çãã©ã³ãã é å»¶ã§ãµãŒããŒè² è·ã忣ããæ©èœãªã©ããããã ãã«ã¬ã³ããŒã€ãã³ã圢åŒã§ãOnCalendar=Mon..Fri 09:00ãã¿ããã«æžããã®ãçŽæçã ãã
ã¯ã©ãŠãã ãšã©ããªãã®ïŒãµãŒããŒã®äžã®cronã ãšæ¢ãŸã£ããçµããã ããïŒ
ãããšããã«æ°ã¥ããããã¯ã©ãŠãç°å¢ã§ã¯ãããŒãžããªã¹ã±ãžã¥ãŒã©ã䜿ãã®ãäž»æµã ããAWSãªãEventBridgeïŒæ§CloudWatch EventsïŒãGCPãªãCloud SchedulerãAzureãªãAzure Functionsã®ã¿ã€ããŒããªã¬ãŒããããKubernetesã«ãCronJobãªãœãŒã¹ããã£ãŠãPodã宿çã«èµ·åã§ããããµãŒããŒãèœã¡ãŠãã¹ã±ãžã¥ãŒã©èªäœã¯ã¯ã©ãŠãåŽã管çããŠãããããå®å¿ã ãã
è€æ°ãµãŒããŒã§åãcronãžã§ããåãã¡ãã£ããããªãã®ïŒ
ãŸãã«ããã忣cronã®æå€§ã®èª²é¡ã§ããexactly-onceå®è¡ãåé¡ãšåŒã°ããããè€æ°ããŒãã«åãcrontabããããšå šå°ã§åæå®è¡ãããŠããŸãã察çãšããŠã¯ãªãŒããŒéžåºïŒ1å°ã ããå®è¡æš©ãæã€ïŒãRedisãªã©ã䜿ã£ã忣ããã¯ããããã©ããããã¯ãŒã¯åææã«ã©ãããããªã©é£ããåé¡ãæ®ããHashiCorpã®NomadãUber補ã®Peratorãªã©ãå°çšã®åæ£ã¹ã±ãžã¥ãŒã©ãç»å ŽããŠãããã ã
ä»ã«ãcronã§æ°ãã€ããããšã£ãŠããïŒ
ããã©ã³ãå£ãæããŠèšãã®ããã¿ã€ã ãŸãŒã³ã®çœ ããšã誰ãç¥ããªãcronãžã§ããåé¡ã ãã倿éïŒDSTïŒåãæ¿ãæã«ãåå2æå°ã®ãžã§ãã2åå®è¡ãããããéã«ã¹ããããããããããUTCã§çµ±äžããã®ãéåã ãããããŠæ¬åœã«æãã®ã¯ãäœå¹Žãåã«èª°ããèšå®ããcronãžã§ãã誰ã«ãåŒãç¶ãããããã®ãµãŒããŒãé圹ãããé端ã«ã·ã¹ãã é害ãèµ·ãããã¿ãŒã³ãcronãžã§ãã®æ£åžããšããã¥ã¡ã³ãåã¯ãå°å³ã ãã©æ¬åœã«å€§äºãªéçšã¿ã¹ã¯ã ãã