Home [리눅스] Linux 작업 예약 스케줄러 (크론 cron)
Post
Cancel

[리눅스] Linux 작업 예약 스케줄러 (크론 cron)

Cron 이란?

특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어가 cron이다.

cron은 특정한 시간에 특정한 작업을 수항하게 해주는 스케줄링 역할을 한다.


cron은 왜 사용할까?

만약 당신이 회사에서 매 새벽 5시에 백업을 해야 한다면, 하루 이틀 정도라면 퇴근하지 않고 기다릴 수 있겠지만, 매일 한다면,, 또 심지어는 야근수당까지 나오지 않는다면? 이런 경우 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해줘야 한다.


Crontab 과 cron과 관련된 몇 가지 파일들

1. crontab

cron작업을 설정하는 파일을 crontab파일이라 한다. cron 프로세스는 /etc/crontab 파일에 설정된 것을 읽어서 작업을 수행한다. crontab 파일은 OS별로 (ubuntu, centOS) 별로 각각 다른 위치에 저장 된다.

1
2
3
기억하기

분 - 시 - 일 - 월(month 기준) - 요일 - 사용자 - 실행명령

2. cron

  1. /etc/cron.daily 와 /etc/cron.weekly 그리고 /etc/cron.monthly 파일이 존재하는데, 이 파일들은 시스템크론설정디렉토리다. 즉 시간, 일, 주, 월별로 파일을 저장한다.
  2. /var/log/cron : 크론 실행파일이 기록되는 로그파일
  3. /etc/cron.allow, etc/cron.deny : 크론 접근을 허용할 ID, 크론 접근을 허용하지 않을 ID 등을 설정할 수 있다.

Cron 동작 방식, cron 실행 흐름

크론이 뭔지, 크론이 어떤 역할을 하는지, 관련파일은 뭐가 있는지 알아보면, cron이 어떻게 동작하는지 좀 더 자세히 알아보자.

cron 실행흐름

cron파일이 데몬이기 때문에 부팅시 백그라운드로 실행된다.


crontab 설정형식과 cron 지정, 등록하기

크론을 생성하기전에 크론탭 형식을 먼저 살펴보자.

먼저 crontab 파일의 7필드 m h dom mon dow user command

  • m : 분(minute)을 나타내고, 0~59로 설정한다
  • h : 시(hour)을 나타내고 0~23으로 설정한다.
  • dom : 날(day of month) 를 나타내고, 1-31로 설정한다.
  • mon : 월(month)을 나타내고 1-12로 설정한다.
  • dow : 요일(day of week)을 나타내고 0-7로 설정. 0과 7을 일요일에 해당한다.
  • user : user-name 사용자 이름을 명시한다
  • command : 실행할 명령어를 기입한다. 명령어 앞에 사용자 이름을 명시해도 된다.

$ crontab [option] 파일명

사용자가 주기적인 작업을 등록하기 위해 사용하는 명령어


유용한 cron 설정 예시

1. 매일 2.am 에 백업하기

  • 0 2 * * * /bin/sh backup.sh

2. 하루에 두번 script.sh 수행

  • 0 5, 17 * * * /scripts/script.sh

3. 매분 수행

  • * * * * * /scripts/script.sh

4. 매 10분마다 monitor 스크립트 실행

  • */10 * * * * /scripts/monitor.sh

5. 1월부터 12월까지 2개월마다 1일날 오전 4시 10분에 /etc/check.sh 스크립트 수행

  • 10 4 1 1-12/2 * /etc/check.sh

이 외에 더 많은 명령어는 구글에 검색만해도 많이 나온다.

This post is licensed under CC BY 4.0 by the author.