cron 정리


이번 포스팅에서는 linux의 cron에 대해 정리를 하고자 합니다. 제가 linux를 많이 다뤄본 적이 없었기 때문에 cron에 대해서는 최근에야 간단히 개념만 들어보았는데, 이번 계기로 cron에 대해 좀 더 상세히 알아보고 정리를 하고자 합니다.

cron이란?

cron은 linux에서 주기적으로 어떤 프로그램을 수행시키는데 사용됩니다. 즉, windows의 스케줄러와 비슷한 역할을 한다고 보시면 됩니다. cron은 원하는 시간에 명령(프로그램)을 시키기 위해 사용되는 데몬이기 때문에, 저희 팀에서는 주로 서버에서 batch 프로세스를 동작시키는데 사용하고 있습니다. 이때 주기적으로 수행되어질 프로그램은 "/usr/spool/cron/crontabs" 디렉토리 밑에 각 사용자의 사용자명과 같은 이름으로 생성됩니다.

cron 설정하기

cron의 작업 설정 파일을 crontab 파일이라고 부릅니다. 이 파일의 위치는 OS 별로 약간씩 차이가 있지만, linux에서는 "/var/spool/cron/ID"에 위치합니다. 하지만 이 파일을 직접 수정하는 것이 아니고 특정 명령어를 통해 cron job을 등록하게 됩니다. 설정 내용을 조회하기 위해서는 다음과 같은 명령어를 사용합니다.

$ crontab -l

위의 명령을 사용하면 현재 cron에 등록되어 있는 작업을 확인할 수 있습니다. 다음으로 crontab에 작업을 등록하기 위해서는 다음과 같은 명령을 사용합니다.

$ crontab -e

위의 명령을 통해 새로운 작업을 등록하거나, 수정을 할 수 있습니다. 위의 명령을 입력할시, cron job 등록을 위한 vi 편집기가 열리게 되고 다음과 같은 형식으로 명령을 한 줄에 하나씩 입력합니다.

필 드 의 미 범 위
첫 번째 0-59
두 번째 0-23
세 번째 0-31
네 번째 1-12
다섯 번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯 번째 명령어 실행할 명령을 한줄로 쓴다

예)
# 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일
30 4,12 * * * /usr/bin/rsync -avxH --delete /home /BACKUP/home > /dev/null 2>&1

위의 명령은 매일 4시 30분, 12시 30분에 rsync 명령을 실행함을 의미합니다. 작업 설정을 할 땐 다음과 같은 규칙을 따릅니다.

작성 규칙

이해를 돕기 위해 몇 가지 예를 더 들어보도록 하겠습니다.

시 간 형 식
매주 토요일 새벽 2:20 20 2 * * 6 명령어
매일 오후 4,5,6시 0 4-6 * * * 명령어
매일 2시간간격으로 5분대에 5 */2 * * * 명령어
매월 1일 새벽 1:15 15 1 1 * * 명령어
1,7월 1일 새벽 0:30 30 0 1 1,7 * 명령어

몇 가지 팁

  1. cron의 설정이 끝난 후, cron 데몬은 재실행할 필요가 없습니다. crontab -e로 설정이 끝난 뒤 vi 편집기에서 저장하시면 바로 적용됩니다.
  2. 사용자 별로 cron의 사용을 제한하고 싶다면, 다음과 파일에 사용자를 등록해둡니다.
    > /etc/cron.allow : 허용할 사용자 ID 목록
    > /etc/cron.deny : 거부할 사용자 ID 목록

지금까지 cron에 대해 간단히 정리를 해보았습니다. 어려운 내용도 아니고, 설정하는 방법 또한 그렇게 어려운 작업이 아니기 때문에, 반복되는 작업이 필요한 경우 언제든 사용 가능하실 거라 생각합니다. 특히, 서버에서 특정 작업을 반복적으로 사용하거나, 작업하기 어려운 시간에 해야하는 서버 작업이 있다면, 미리 cron job으로 등록을 해두시면 효율적으로 서버 작업을 수행하실 수 있습니다.

[top]

comments powered byDisqus