CRONTAB(5)

명칭
crontab - cron 를 구동하기 위한 일람표

해설
1 개(살)의 crontab 파일에는 ``이 날의 이 시간에 이 명령을 실행해'' 그렇다고 하는 일반적인 형식의 cron(8) demon에게로의 복수의 지시가 포함되어 있습니다. 각각 유저는 각자 소유의 crontab 를 가져, crontab 에 쓰여진 명령은 그 crontab 를 소유하는 유저로서 실행되게 됩니다. UUCP 와 News 는 통상 그것 자신 소유의 crontab 를 가져, cron 명령의 일부로서 su(1) (을)를 실제로 실행시킬 필요가 없게 하고 있습니다.

공행과 선두의 공백 및 탭은 무시됩니다. 최초의 비공백 캐릭터가 파운드 기호 (#)인 행은 주석행이며, 무시됩니다. 주석은 cron 명령와 같은 행에 있어서는 안됩니다. 왜냐하면, 주석 자신이 명령의 일부로 간주해지기 때문입니다. 같이 주석은 환경 변수를 설정하는 행과 같은 행에 있어 (은)는 안됩니다.

crontab 중(안)에서 유효한 것은 환경 변수의 설정인가 또는 cron 명령의 어느 쪽인지입니다. 환경 변수의 설정은 다음과 같은 형태로 실시합니다.

        name = value

여기서 등호 (=)의 주위의 공백은 있어도 좋습니다만, value 중(안)에서 = 에 계속하는 스페이스가 아닌 부분만큼이 name 에 할당치가 됩니다. value 캐릭터 라인은 쿼트 (싱글 쿼트 또는 더블 쿼트입니다만 어딘가에 통일합니다) 그리고 둘러쌀 수도 있어 그 때에는 = 에 계속되는 공백이나 말미의 공백 (을)를 포함할 수가 있습니다. name 캐릭터 라인도 쿼트 (싱글 쿼트 또는 더블 쿼트입니다만 어딘가에 통일합니다) 그리고 둘러쌀 수도 있어 전치, 후치 및 내부의 공백을 유지합니다.

몇개의 환경 변수는 자동적으로 cron(8) demon에 의해 설정됩니다. SHELL 하 /bin/sh (으)로 설정되어 LOGNAME (와)과 HOME (은)는 그 crontab 의 소유자의 /etc/passwd 행을 바탕으로 설정됩니다. HOME (와)과 SHELL (은)는, crontab 파일중에서 설정하는 것으로 덧쓰기할 수 있습니다만, LOGNAME (은)는 할 수 없습니다.

(별주: LOGNAME 변수는 BSD 시스템상에서는 USER (으)로 불리는 일이 있습니다. 이러한 시스템상에서는 USER 도 설정됩니다. )

LOGNAME, HOME, SHELL 에 가세해 ``이'' crontab 로 실행한 명령의 실행 결과를 메일로 보내는 이유가 있는 경우, cron(8) 하 MAILTO (을)를 봅니다. MAILTO 하지만 정의되고 있어 (한편 하늘이 아니다)라고 해 거기서 지정된 이름의 유저에게 메일 하지만 보내집니다. MAILTO 하지만 정의되고 있지만 하늘 때 (MAILTO=""), 메일은 보내지지 않습니다. 그 외의 경우에는 메일은 crontab 의 소유자에게 보내집니다. cron 인스톨시에, 메이라로서 /usr/lib/sendmail (은)는 아니고 /bin/mail (을)를 사용하는 경우, 이 옵션은 유용합니다 -- /bin/mail (은)는 에리아스를 실시하지않고, UUCP 는 통상 자기앞의 메일을 읽지 않습니다.

cron 명령의 포맷은 거의 V7 표준이며, 많은 상위 호환 확장을 가지고 있습니다. 각 행은 5 개의 시간과 일자의 란, 시스템 crontab 파일의 경우는 계속되어 유저명 (``:<그룹>'' 및 ``/<로그인 클래스>''의 첨자가 붙는 일도 있습니다), 그 후에 명령이 계속됩니다. 분 , 시간, 달의 란과 현재의 시각이 일치해, 한편 2 개의 일자란 (달에 있어서의 날 또는 요일) 중 적어도 1 개(살)과 현재의 시각이 일치했을 때 (아래와 같은 ``주''참조)에, 명령은 cron(8) 에 의해 실행됩니다. cron(8) (은)는 1 분 마다 cron 엔트리를 조사합니다. 시간과 일자의 란은 다음과 같습니다.

         란 용서되는 값
    ------------   ------------------------------------------------
         분       0-59
        시간      0-23
    달에 있어서의 날  1-31
         달       1-12 (또는 이름, 아래와 같이 참조)
        요일      0-7 (0 및 7 은 일요일의 일. 이름을 이용해도 괜찮다)

란은 asterisk (*)에서도 좋습니다만, 이 때에는 항상 "최초-최후" 를 나타내는 와 (와)과가 됩니다.

수치 area를 지정할 수 있습니다. area 지정은, 2 개의 수를 하이픈으로 연결한 것입니다. 지정된 area는, 양단을 포함합니다. 예를 들어 ``시간''엔트리의 것 8-11 은, 8, 9, 10, 11 시의 실행을 지정하게 됩니다.

리스트 지정도 할 수 있습니다. 리스트 지정은 콤마에 의해 수 (또는 area 지정)를 개인 나막신 1 조입니다. 예: ``1, 2,5,9'', ``0-4,8-12''.

간격치는 area 지정과 함께 이용할 수가 있습니다. area 지정에 이어 ``/<수>''를 지정하면(자), 그 area를 통해서 그 수의 값만 좌천시키는 값이 됩니다. 예를 들어 ``0-23/2''는 시간의 란에서 이용되면(자), 2 시간 간격으로 명령을 실행 하게 됩니다 (다른 방법으로 V7 표준으로 나타내면 ``0, 2,4,6,8,10,12,14,16,18,20,22''됩니다). 간격 지정은 asterisk의 다음에 붙여도 상관하지 않습니다. 예를 들어 ``2 시간 간격으로 모두''라고 하는 것을 하고 싶다 (이)라면 ``*/2''로 할 뿐입니다.

``달'' 및 ``요일''의 지정에는, 이름을 사용할 수가 있습니다. 요일과 달의 지정에는, 최초의 3 캐릭터를 사용해 주세요 (이 경우, 대문자·소문자의 구별은 없습니다). 이름에 의한 area 지정이나 리스트 지정은 성과 선.

``6 번째 ''의 란 (행의 나머지의 부분)에는 실행하고 싶은 명령을 지정합니다. 행의 안의 명령부 전체, 이것은 개행 또는 % 캐릭터까지입니다만, 은 /bin/sh 가마타는 그 cron 파일의 SHELL 변수로 지정된 쉘에 의해 실행됩니다. 명령내의 퍼센트 기호 (%)(은)는 backslash (\)로 이스케이프 되지 않는 한 개행 캐릭터에 변환하고, 의 최초의 % 이후의 모든 데이터는 그 명령의 표준 입력이 됩니다.

주: 명령 실행의 일자는 2 개의 란 — 1 개월중일 및 요일 — 로 지정할 수 있습니다. 양쪽 모두의 란이 area 한정되고 있다 (즉 * 이 아니다 ) 경우, 명령은 어느 쪽인가의 란이 현재의 시각과 일치할 경우에 실행됩니다. 예를 들어 ``30 4 1,15 * 5'' (은)는 매월의 1 일 및 15 일에 가세해 모든 금요일에 있어, 오전 4:30 에 명령을 실행시킵니다.

최초의 5 개의 란대신에, 8 종류의 특수 캐릭터 라인 중중 한쪽이 등장해도 좋습니다:

    캐릭터 라인 의미
    ------		-------
    @reboot		기동시에 1 회 실행.
    @yearly		1년에 1 회 실행, 즉 "0 0 1 1 *".
    @annually	(@yearly 와 같다)
    @monthly	한달에 1 회 실행, 즉 "0 0 1 * *".
    @weekly		주에 1 회 실행, 즉 "0 0 * * 0".
    @daily		일에 1 회 실행, 즉 "0 0 * * *".
    @midnight	(@daily 와 같다)
    @hourly		시간에 1 회 실행, 즉 "0 * * * *".

cron 파일의 예

    # 기정 설정을 cron 로 오바라이드 해, 명령의 실행에 /bin/sh 를 사용
    SHELL=/bin/sh
    # 이것이 누구의 crontab 여도, 모든 출력은 `paul'에 메일 한다
    MAILTO=paul
    #
    # 매일 심야 0 시 5 분에 실행한다
    5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
    # 매월의 최초일의 PM 2:15 에 실행하는 -- 출력 결과는 paul 에 메일 된다
    15 14 1 * *     $HOME/bin/monthly
    # 위크디의 PM 10 시에 실행해 Joe 를 팔고 말이야 무늬 다툰다
    0 22 * * 1-5	mail -s "It's 10pm" joe%Joe, %%Where are your kids? %
    23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
    5 4 * * sun     echo "run at 5 after 4 every sunday"

관련 항목
crontab(1), cron(8)

기능확장 항목
요일을 지정할 때, 날 0 으로 날 7 은 일요일로 간주해집니다. BSD 및 ATT (은)는 이 건에 대해서는 일치하고 있지 않는 것 같습니다.

리스트 지정 및 area 지정은 같은 란내에서 지정할 수 있습니다. "1-3,7-9" (은)는 ATT (이)나 BSD cron 에서는 받아들이지 않습니다 -- "1-3" 나 "7,8,9" 만이 용서됩니다.

area 지정은 ``간격 지정''를 포함할 수가 있기 때문에 "1-9/2" 는 "1,3,5,7,9" 로 같은 것이 됩니다.

달의 이름이나 요일의 이름은, 이름으로 지정할 수 있습니다.

환경 변수는 crontab 중(안)에서 지정할 수 있습니다. BSD (이)나 ATT 그럼 child process에게 건네진 환경 변수는 기본적으로 /etc/rc (으)로부터 건네받은 환경 변수입니다.

crontab 소유자에게 메일 된다 ( BSD (은)는 할 수 없습니다) 명령 출력 결과는, crontab 소유자 이외의 사람에게 메일 하거나 (SysV 는 할 수 없습니다), 이 기능을 정지해 누구에게도 메일을 보내지 않게 할 수 있습니다 (SysV 는 이것도 할 수 없습니다).

최초의 5 개의 란의 장소에 기술 가능한 ‘@’ 명령 모든 것은, 확장입니다.

저자
Paul Vixie <paul@vix.com>

버그
서머타임이라는 것이 있는 기묘한 70 의 나라들의 어느 쪽인가에 있는 경우, 되감아 또는 조돌리기의 기간에 스케줄 된 작업이 영향을 받습니다. 일반적으로는, 이 기간에 작업을 스케줄 하는 것은 좋은 일이 아닙니다.

US 타임 존에서는 (IN, AZ, HI 를 제외해), 시각 쉬프트는 오전 2 시에 일어납니다. 다른 나라에서는, zdump(8) 프로그램의 장황 (-v) 옵션을 사용해, 시각 쉬프트가 언제 일어나는지를 판정해 주세요.