특정 이벤트를 주기적으로 발생시키기 위해서 사용하는 방법은 cron이라는 모듈이다. 유닉스 계열 컴퓨터 운영체제의 시간 기반 Job 스케줄러이다.
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
*
(별표) - 모든 값을 의미 함,
(쉼표) - 여러 목록을 입력할 때 사용함-
(하이픈) - 범위를 정할 때 사용?
(물음표) - 대신에 day-of-month 또는 day-of-week 중 하나를 공백으로 남겨 둘 때 사용한다. 어떤 곳에서는 cron 데몬의 시동 시간으로 정의된다. 그래서 cron이 오후 4시 58 분에 시작되면 ? ? * * * *
가 16 58 * * * *
로 업데이트되고 다시 시작할 때까지 매일 이 시간에 실행된다./
(슬래시) - 간격값을 설정함 */5 는 매 5분마다 임을 나타냄var cron = require('node-cron');
cron.schedule('* * * * * *', function(){
// 12시 정각마다 Hello를 출력한다.
console.log('Hello!');
});
해당 syntax를 간단하게 만들어 사용할 수 도 있지만 cronMaker와 같이 사이트를 사용해서 표현식을 만든 뒤에 검증하는 방법을 사용하는 것이 좋을 것 같다.
http://www.cronmaker.com/
덕분에 글을 읽다가 찾아봤는데, 내용에 참고가 되시라고 코멘트 남겨봅니당
crontab standard syntax 는 최소 단위로 분 밖에 지원하지 않는다고 해요.
https://en.wikipedia.org/wiki/Cron#CRON_expression
crontab 구현에 따라 six fields 를 지원하지 않는 경우가 있고, 표준은 five fields 라고 합니다
https://en.wikipedia.org/wiki/Cron#CRON_expression
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html
nncron 의 경우 six fields 를 지원하지만. windows 환경에서 가능한 것으로 보여요
http://www.nncron.ru/download.shtml (설치 파일이 .exe 인걸로 미루어 봤을때)
(그렇다고 *NIX 환경에서 six fields 가 안된다는건 아닙니다)
덕분에 저도 모르는걸 많이 찾아보게 되었네요. 좋은 글 잘 읽었습니다 🙇♂️