crontab 명령

용도

cron 작업을 제출, 편집, 나열 또는 제거합니다.

구문

crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]

설명

crontab 명령은 cron 작업을 제출, 편집, 나열 또는 제거합니다. cron 작업은 cron 디먼이 정기적으로 계획된 간격으로 실행하는 명령입니다. cron 작업을 제출하려면, crontab 명령을 -e 플래그와 함께 지정하십시오. crontab 명령은 crontab 파일을 작성할 수 있는 편집 세션을 호출합니다. 이 파일에 각 cron 작업에 대한 항목을 작성합니다. 각 항목은 cron 디먼에 맞는 양식이어야 합니다. 항목 작성에 대한 정보는 crontab 파일 항목 형식을 참조하십시오.

항목 작성을 마치고 파일을 종료하면 crontab 명령은 /var/spool/cron/crontabs 디렉토리에 이를 복사하고 현재 사용자 이름으로 이름 지정된 파일에 배치합니다. 사용자 이름을 갖는 파일이 crontabs 디렉토리에 이미 존재하는 경우, crontab 명령은 기존 파일 위에 겹쳐씁니다.

또는 File 매개변수를 지정하여 crontab 파일을 작성할 수 있습니다. 파일이 존재할 경우, 그 파일은 cron 디먼이 예상하는 형식이어야 합니다. 파일이 없으면 crontab 명령에서 편집기를 호출합니다. EDITOR 환경 변수가 있을 경우, 명령은 지정하는 편집기를 호출합니다. 그렇지 않으면 crontab 명령은 vi 편집기를 사용합니다.

crontab 파일의 컨텐츠를 나열하려면 -l 플래그와 함께 crontab 명령을 지정하십시오. 기존 파일을 제거하려면 -r 플래그를 사용하십시오.

crontab 파일의 소유자 또는 루트 사용자는 선택적 UserName 매개변수를 사용하여 지정한 사용자에 대한 cron 작업의 상태를 편집하거나 나열하거나 제거하거나 검증할 수 있습니다. UserName이 유효하지 않으면 오류 메시지가 생성되고 프로그램이 종료합니다.

선택적 UserName 매개변수를 지정하지 않은 경우 루트 사용자 및 현재 사용자는 crontab 플래그를 사용할 수 없습니다.

보안

crontab 파일의 소유자 또는 루트 사용자만 -e, -l, -r, -v 플래그 뒤에서 UserName을 사용하여 지정된 사용자의 crontab 파일을 편집, 나열, 제거 또는 검증할 수 있습니다.

cron 디먼

cron 디먼은 crontab 파일 항목에 따라 명령을 실행합니다. cron 작업의 출력을 표준 출력 또는 오류로 재지정하지 않으면 cron 디먼은 명령 출력이나 오류를 메일로 전송합니다. crontab 파일에서 cron 작업을 잘못 지정한 경우 cron 디먼은 작업을 실행하지 않습니다.

cron 디먼은 cron 디먼이 초기화될 때에만 crontab 파일을 확인합니다. crontab 명령을 사용하여 crontab 파일을 변경하면 변경사항이 cron 디먼으로 전송되었다는 메시지가 나타납니다. 그러면 새로운 파일 또는 변경된 파일에 대해 정기적으로 계획된 간격으로 오버헤드를 확인하지 않아도 됩니다.

crontab 명령 사용 시 제어

/var/adm/cron/cron.allow/var/adm/cron/cron.deny 파일에서 crontab 명령을 사용할 수 있는 사용자를 제어합니다. 루트 사용자는 이 파일을 작성, 편집 또는 삭제할 수 있습니다. 이 파일의 항목은 한 행에 이름이 한 개 있는 사용자 로그인 이름입니다. 사용자의 로그인 ID가 둘 이상의 로그인 이름과 연관되는 경우, crontab 명령은 사용자가 실제로 사용 중인 로그인 이름과 상관없이 /etc/passwd 파일에 있는 첫 번째 로그인 이름을 사용합니다. 또한, 사용자가 cron 작업을 시작하도록 하려면, /etc/security/user 파일의 디먼 속성이 chuser 명령을 사용하여 TRUE로 설정되어야 합니다.

다음은 cron.allow 파일의 예제입니다.

rootnick
dee
sarah

cron.allow 파일이 있을 경우, 이 파일에 로그인 이름이 나타나는 사용자만 crontab 명령을 사용할 수 있습니다. 루트 사용자의 로그 이름이 cron.allow 파일(파일이 있는 경우)에 나타나야 합니다. 시스템 관리자는 명시적으로 사용자의 로그인 이름을 cron.deny 파일에 나열하여 사용자가 crontab 명령을 사용할 수 없게 할 수 있습니다. cron.deny 파일만이 존재하는 경우, 이름이 파일에 나타나지 않는 모든 사용자가 crontab 명령을 사용할 수 있습니다.

다음 중 하나에 해당되는 경우, crontab 명령을 사용할 수 없습니다.

  • cron.allow 파일과 cron.deny 파일은 존재하지 않습니다(루트 사용자만 허용함).
  • cron.allow 파일은 존재하지만 사용자의 로그인 이름이 나열되어 있지 않습니다.
  • cron.deny 파일은 존재하며 사용자의 로그인 이름이 나열되어 있습니다.

cron.allowcron.deny 파일이 둘 다 존재하지 않는 경우, 루트 사용자 권한이 있는 사람만 crontab 명령으로 작업을 제출할 수 있습니다.

crontab 파일 항목 형식

crontab 파일에는 각 cron 작업에 대한 항목이 있습니다. 항목은 줄 바꾸기 문자로 분리됩니다. 각 crontab 파일 항목은 다음 양식에서 공백 또는 탭으로 분리된 여섯 개의 필드를 포함합니다.

 
minute  hour  day_of_month  month  weekday  command

이 필드는 다음 값을 승인합니다.

항목 설명
minute 0 - 59
hour 0 - 23
day_of_month 1 - 31
month 1 - 12
weekday 일요일부터 토요일까지를 나타내는 0 - 6
command 쉘 명령

각 필드에 대해 값을 지정해야 합니다. command 필드를 제외한 이들 필드는 다음을 포함할 수 있습니다.

  • 지정된 범위의 숫자. 5월에 명령을 실행하려면, 필드에 5를 지정하십시오.
  • 포함 범위를 나타내며, 대시로 구분된 두 개의 숫자. 화요일부터 금요일까지 cron 작업을 실행하려면, weekday 필드에 2-5를 입력하십시오.
  • 쉼표로 분리된 숫자 리스트. 1월의 첫 날과 마지막 날에 명령을 실행하려면, 필드에 1,31을 지정합니다.
  • 대시로 분리된 두 개의 숫자 조합은 경계를 포함하는 범위를 나타내고, 쉼표로 분리된 숫자 리스트를 함께 사용할 수 있습니다. 1월의 1일, 10일에서 16일, 마지막 날에 명령을 실행하려면 day_of_month 필드에 1,10-16,31을 지정합니다. 위의 두 개 점도 함께 사용할 수 있습니다.
  • *(별표)는 모든 허용된 값을 의미합니다. 1시간마다 작업을 실행하려면, hour(시) 필드에 별표를 지정하십시오.
참고: 백슬래시(% 포함) 뒤에 오는 모든 문자는 리터럴 문자로 간주됩니다. 날짜의 지정은 두 필드(날짜와 요일)에 의해 이루어질 수 있습니다. 둘 다 요소의 리스트로 지정할 경우, 모두 준수됩니다. 예를 들어, 다음과 같이 입력합니다.
0 0 1,15 * 1 command

이 명령은 매 월요일뿐만 아니라 각 달의 1일과 15일에 명령을 실행합니다. 하나의 필드로만 날짜를 지정하려면 다른 필드가 *를 포함해야 합니다.

명령 지정

cron 디먼은 선택된 날짜와 시간의 여섯 번째 필드에 이름 지정된 명령을 실행합니다. 여섯 번째 필드에 %(퍼센트 부호)를 포함하면, cron 디먼은 그 앞에 오는 모든 것을 명령 호출로 처리하고, 퍼센트 부호(\%) 내에 있는 한 그 뒤에 오는 모든 것을 표준 입력에서 사용할 수 있습니다. 공백 행과 첫 번째 비공백 문자가 숫자 부호(#)인 행은 무시합니다. 명령에 대한 인수에 백슬래시('\')가 있을 경우, 백슬래시 앞에 또 다른 백슬래시가 있어야 합니다.

참고: 쉘은 명령 필드의 첫 번째 행만 실행합니다. 모든 다른 행은 명령에 표준 입력으로 사용 가능합니다.

cron 디먼은 사용자의 HOME 디렉토리에서 서브쉘을 시작합니다. 로그인되지 않은 경우 실행할 명령을 스케줄하고 .profile 파일에서 명령을 실행하려는 경우 명령은 명시적으로 .profile 파일을 읽어야 합니다.

cron 디먼은 모든 쉘에 대해 디폴트 환경을 제공하며 다음을 정의합니다. HOME, LOGNAME, SHELL (=/usr/bin/sh), PATH (=/usr/bin).

감사 이벤트

감사 서브시스템이 적절하게 구성되고, 사용으로 설정된 경우 명령이 실행될 때마다 crontab 명령은 다음 감사 레코드(이벤트)를 생성합니다.

이벤트 정보
CRON_JobRemove crontab 파일을 제거한 사용자와 제거한 시점을 나열합니다.
CRON_JobAdd crontab 파일을 편집한 사용자와 제거한 시점을 나열합니다.

RBAC 사용자 및 신뢰할 수 있는 AIX® 사용자에 대한 주의: 이 명령은 특권 조작을 수행할 수 있습니다. 특권이 있는 사용자만 특권 조작을 실행할 수 있습니다. 권한 부여와 특권에 대한 자세한 정보는 보안의 특권 명령 데이터베이스를 참조하십시오. 이 명령과 연관된 특권 및 권한 부여 리스트에 대해서는 lssecattr 명령 또는 getcmdattr 부속 명령을 참조하십시오.

플래그

항목 설명
-e UserName 사용자의 crontab 파일 사본을 편집하거나 유효한 UserName에 대한 crontab 파일이 없을 경우 빈 파일을 작성하여 편집합니다. 편집이 완료되면 파일은 사용자의 crontab 파일과 같은 crontab 디렉토리로 복사됩니다.
-l UserName 사용자의 crontab 파일을 나열합니다.
-r UserName crontab 디렉토리에서 사용자의 crontab 파일을 제거합니다.
-v UserName 사용자의 cron 작업의 상태를 나열합니다.

종료 상태

이 명령은 다음 종료값을 리턴합니다.

항목 설명
0 성공적으로 완료되었습니다.
>0 오류가 발생했습니다.

예제

  1. /var/admn/cron/crontabs 디렉토리로 mycronjobs 파일을 복사하려면 다음과 같이 입력하십시오.
    crontab mycronjobs
    다음과 같이 파일이 복사됩니다.
    /var/spool/cron/crontabs/<username>
    여기서, <username>은 현재 사용자 이름입니다.
  2. 매시간마다 콘솔에 시간을 기록하려면 다음과 같이 입력하십시오.
    0 * * * * echo The hour is `date` . 
    >/dev/console
  3. 모든 월요일, 수요일, 금요일 오전 6시 30분에 calendar 명령을 실행하려면 다음과 같이 입력하십시오.
    30 6 * * 1,3,5 /usr/bin/calendar
  4. 일년 내내 매일 6시 30분에 calendar 명령을 실행하려면 다음과 같이 입력하십시오.
    30 6 * * * /usr/bin/calendar
  5. 8월 동안 매일 자정에 maintenance라는 스크립트를 실행하려면 다음과 같이 입력하십시오.
    0 0 * 8 * /u/harry/bin/maintenance
  6. 명령에 표준 입력에 대한 텍스트를 정의하려면 다음과 같이 입력하십시오.
    0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to 
    turn in your time card.
    wall 명령에 표준 입력을 정의하는 %(퍼센트 부호) 뒤의 텍스트는 다음과 같습니다.
    HAPPY HOLIDAY!
     
    Remember to turn in your time card.

파일

항목 설명
/var/adm/cron/FIFO crontab 또는 at 명령으로 새로운 작업이 제출될 때 cron 디먼으로 메시지를 전송하는 이름 지정된 파이프입니다.
/var/spool/cron/crontabs crontab 스풀 영역을 지정합니다.
/var/adm/cron/cron.allow crontab 명령에 대한 액세스가 허용된 사용자의 리스트를 지정합니다.
/var/adm/cron/cron.deny crontab 명령에 대한 액세스가 거부된 사용자의 리스트를 지정합니다.