크론식

megaseunghan·2022년 6월 7일
0

Cron

시스템을 운용하다보면 정기적으로 수행해야하는 일이 생기는데 이 때 사용하는 것이 Cron이라는 프로그램이다.

어떻게 사용할까?

crontab- e

위 명령어를 linux 쉘에 입력하면 에디터가 뜨는데 여기에 정기적으로 하고자 하는 일을 정의할 수 있다.

또한 다음과 같은 라인을 볼 수 있다. 이는 어떻게 적으면 되는지 간단하게 설명한 것이다.

m	h	dom	mon	dow	command
  • m : 분

  • h : 시

  • dom : 월 기준 일

  • mon : 월

  • dow : 월 기준 요일

  • command : 명령어 (수행할 작업을 이곳에 적는다)

크론 표현식 (CronExpression)

크론 표현식에는 총 6항목이 있는데 항목은 왼쪽부터 순서대로 다음과 같다.

  1. 요일(0-7)

위 내용을 알맞게 적기 위해서는 간단한 이해가 필요하다. 먼저 표를 살펴보자

  • 필드에 허용되는 값과 특수문자, - * /
필드허용값허용 특수문자
0 ~ 59, - * /
0 ~ 59, - * /
0 ~ 23, - * /
일(Day Of Month1 ~ 31, - * / L W
1 ~ 12 || JAN ~ DEC, - * /
요일0 ~ 6 또는 SUN ~ SAT, - * / L #
1070 ~ 2099, - * /
  • 특수문자 별 의미
특수문자의미
*모든 값
?특정값 없음
-범위를 지정함
,여러 값
/증가 값을 지정(초기 / 증가)
L마지막 값 지정
W가장 가까운 평일
#몇 번째 무슨 요일인지 지정

예제

강의 내에서는 다음과 같은 Cron식을 추가했다.

*/1 * * * * date >> date.log

위 내용은 매 분마다 date를 date.log에 저장한다는 의미이다. 위 내용을

crontab- e

에 적으니 쉘에서는 아래와 같이 crontab을 설치중이라는 문장을 출력해준다.

installing new crontab

예제에서는 -e 옵션을 주었지만 다른 옵션도 추가로 설명해보겠다.

Options:
 -u <user>  define user
 유저를 정의한다.
 -e         edit user's crontab
 유저의 crontab을 수정한다.
 -l         list user's crontab
 유저의 crontab 리스트를 보여준다.
 -r         delete user's crontab
 유저의 crontab을 삭제한다.
 -i         prompt before deleting
 삭제전 확인을 한다.
 -n <host>  set host in cluster to run users' crontabs
 클러스터의 호스트가 크론탭을 실행하도록 설정
 -c         get host in cluster to run users' crontabs
 크론탭을 실행하는 클러스터의 호스트를 불러온다

크론으로 할 수 있는 일들 (사례)

정기적으로 해야되는 일들은 많이 있는데 강의에서는 하나의 사례를 소개해주었다.

웹페이지에 사용자가 입력하는 양식이 있다. 그리고 전송을 눌러 서버로 양식을 전송을 하면 서버가 사용자가 보낸 정보를 받아 정보를 보낸이가 10만명이 될 때까지 기다렸다가 10만명이 다 찰 때, 새로운 글이 등록되었다는 회신과 함께 글을 등록한 모든 사용자들에게 이메일을 보내는프로그램이 있다라고 하자. 1명 당 회신 + 이메일을 보내는데0.1s가 걸린다면 이 프로그램은 좋은 프로그램이 아닐 것이다.

크론을 사용하면

사용자가 정보를 전송하면 서버쪽 컴퓨터에는 전송이 되었다(SAVED)상태를 저장하고 이를 곧바로 회신해준다. 그리고 서버에 설치된 CRON이 정기적으로 컴퓨터의 SAVED정보가 추가되었다면 그 정보를 주기에 맞춰 BACKGROUD로 100,000개의 이메일을 보내는 작업을 사용자에게 보내는 작업을 진행하면 사용자는 오래 기다릴 필요가 없어진다.

Reference

생활코딩, 리눅스(정기적 실행 1, 2) - https://opentutorials.org/module/2538/14218

0개의 댓글