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=화,…)
여섯번째 명령어 실행할 명령을 한줄로 쓴다

ex)

#30분, 새벽 4시와 낮 12시, 모든일, 모든월, 모듬요일
30 4,12 * * * /user/bin/rsync -avxH -- delete/home/backup/home > /dev/null 2> &1`

위의 명령은 매일 4시 30분, 12시 30분에 rsync 명령을 실행함을 의미한다

작성규칙

  • ‘*‘표시는 해당 필드의 몯느 시간을 의미
  • 3,5,7 와 같이 콤마(,)로 구분하여 여러 시간대 지정 가능
  • 2-10 와 같이 하이픈(-)으로 시간 범위 지정
  • 2-10/3 와 같이 하이픈(-)으로 시간범위를 슬래쉬(/)로 시간 간격을 지정(2~10까지 3간격으로, 즉 3,6,9를 의미)

몇 가지 팁

  1. cron의 설정이 끝난 후, cron 데몬은 재실행할 필요가 없습니다.crontab -e로 설정이 끝난 뒤 vi편집기에서 저장하시면 바로 적용됩니다

  2. 사용자별로 cron의 사용을 제한하고 싶다면, 다음의 파일에 사용자를 등록합니다

    • /etc/cron.allow : 허용할 사용자 ID 목록
    • /etc/cron.deny : 거부할 사용자 ID 목록