본문 바로가기

Developer/Knowledge Base

[펌+편집] crontab 사용법

crontab -e로 편집모드로 진입. 편집이 완료되면 :wq 로 종료
별도의 재기동절차는 필요없다.

Quick Reference는 아래를 참조
http://www.adminschoice.com/docs/crontab.htm

원문 : http://hbesthee.tistory.com/276

cron 데몬이 지정된 시간에 주기적인 처리를 위한 정보를 저장해 두는 테이블 파일입니다.

각 줄은 "다섯개의 시간과 날짜 필드, 다음에, 사용자 이름(시스템 crontab 파일일 경우), 다음에 실행될 명령" 이런 형식이다. 지정한 명령은 데몬에 의해, 지정한 날짜, 시간에 실행된다.

필드           사용할 수 있는 값
-----         -----------------
            0-59
            0-23
날짜          0-31
            0-12 (아래 참조, 달 이름을 사용 가능)
요일          0-7 (0 또는 7: 일요일 , 요일이름을 사용 가능)

한 필드에 `*' 문자가 올 수 있는데, 이것은 그 단위 전체를 말한다. (예를 들어, 날짜 부분에 `*' 문자가 오면 `매일'을 뜻한다)
숫자의 범위가 사용될 수 있다. 범위는 하이픈(`-') 문자로 지정하며, 앞에 숫자가 뒷 숫자보다 작아야한다. 예를 들어, 시간 필드에 8-11 이 오면, 8, 9, 10, 11시를 뜻한다.
또한 이 값들은 나열될 수 있으며, 그 구분은 쉼표(`,')로 한다. 예: 1,2,5,9, 0-4,8-12.
값의 범위를 지정할 때, 특정 단위로 건너 뛸 수 있는데, 이것은 그 범위 다음에 `/<숫자>' 형식으로 덧붙혀 준다. 예를 들어, 시간 필드에 `0-23/2' 값이 사용되면, 이것은 두시간 마다, 즉 `0,2,4,6,8,10,12,14,16,18,20,22' 시를 뜻한다. 또한 `매 두시간 마다'라는 뜻으로, `*/2' 이런식으로 사용될 수 있다.
여섯번째 필드(줄의 마지막)에는 실행시킬 명령이 온다. 그 명령이 실행될 때 줄을 나누는 것은 `%' 문자로 하며, 즉, 이것은 쉘에 의해서 다른 명령이 실행됨을 의미한다. (`%' 문자 앞에 있는 것이 하나의 쉘 명령이며, 뒤에 있는 것이 또다른 하나의 쉘 명령임을 뜻한다.) 또한 한 명령인데, 부득이하게 줄을 나누워야 할 경우에는 백슬래쉬(\) 문자를 사용한다.

다른 유저의 profile을 이용해야 하는 경우에는 다음과 같이 처리한다.
/bin/su - myuser -c "myprog">/dev/null 2>&1


@ 주의점
줄, 공문자나, 탭문자로 시작하는 줄, 줄 첫칸에 `#' 문자가 있는 줄은 모두 무시된다.
명령이 지정되어 있는 줄 안에서는 주석을 사용할 수 없다.
환경변수 설정하는 곳에는 이 주석문을 사용할 수 없다.

@ 사용예제
# 명령어를 실행 쉘 지정
SHELL=/bin/sh
# 편지를 받을 사용자 지정
MAILTO=paul
#
# 매일 00시 05분에 특정작업을 하는 경우
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# 매달 1일 오후 2시 15분에
15 14 1 * *     $HOME/bin/monthly
# 월요일부터 금요일 까지 매일 오후 10시에.
0 22 * * 1-5   mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "이것은 매일 0, 2, 4, ... 시 23분에 보여집니다."
5 4 * * sun     echo "이것은 매 일요일 오전 4시 5분에 보여집니다."