Cron은 Time-based Job Scheduler 유틸리티이다.

 

리눅스에서 Cron은 crontab (cron table)이라는 파일에 의해 작업의 스케줄링을 수행한다.

 

기본적인 사용 흐름은 crontab을 통해 스케줄을 등록하고, 해당 시간이 충족될 때마다 설정된 작업을 수행한다.

 

$ crontab -e

 

위의 명령에 따라 vi 에디터와 동일한 화면이 실행되는데, 이 파일이 바로 cron table로서 스케줄을 등록하는 파일이다.

 

스케줄 등록 규칙은 아래와 같이 간단하다.

 

* * * * * /home/user/start.sh arg1
* * * * * /home/user/start.sh arg2
* * * * * /home/user/start.sh arg3

 

위의 예시를 설명해보자면, 매분마다 arg1, arg2, arg3의 인자와 함께 각 start.sh 스크립트를 실행한다.

 

이처럼 여러 라인에 걸처 스케줄을 등록함에 따라 여러 프로그램을 시간에 따라 관리할 수 있다.

 

여기서 중요한 부분은 스케줄을 수행할 시간이다. (예시에서 * * * * * 부분)

 

총 5개의 시간 단위를 설정할 수 있는데 순서대로 분, 시, 일, 월, 요일을 나타낸다.

  • 분: 0 - 59
  • 시: 0 - 23
  • 일: 1 - 31
  • 월: 1 - 12
  • 요일: 0 - 6 (Sun - Sat)
추가로 흔히 사용하는 Special Character들은 다음과 같다.
  • Comma( , ): 0,5,10 처럼 여러 시간 단위를 설정할 때 활용
  • Hyphen( - ): 0-10 처럼 시간 범위를 설정할 때 활용
  • Slash( / ): */5 처럼 시간 간격을 설정할 때 활용
어렵게 느껴질 수 있지만 예제와 함께 이해해보면 금방 적응할 수 있다.
 
0,7,40 * * * * /home/user/start.sh arg1
*/5 * * * * /home/user/start.sh arg2
0 1 * * 0-2 /home/user/start.sh arg3
 
위의 예제를 설명하자면,
- arg1을 인자로 start.sh 스크립트를 매 0분, 7분, 40분에 실행한다.
- arg2를 인자로 start.sh 스크립트를 5분 간격으로 실행한다.
- arg3을 인자로 start.sh 스크립트를 일요일부터 화요일까지 AM 01:00에 실행한다.

 

여기까지가 기본적인 Cron 활용법이라고 생각한다.

 

물론, 이 외에도 다양한 기법(?)으로 Cron을 활용하여 Job Scheduling을 시스템에 등록할 수 있다.

 

블로그 이미지

나뷜나뷜

,