Crontab을 사용하여 Cron 작업 스케줄링

Crontab을 사용하여 Cron 작업 스케줄링

2022-06-01 last update

8 minutes reading crontab cron terminal
Cron은 지정된 시간 간격으로 작업을 수행하는 스케줄링 데몬입니다.이러한 작업을cron작업이라고 하는데 주로 시스템 유지보수나 관리를 자동화하는 데 쓰인다.예를 들어, 반복된 작업을 자동화하기 위해cron 작업을 설정할 수 있습니다. 예를 들어 backing up databases
또는 데이터, 최신 보안 패치를 사용하여 시스템 업데이트, 검사disk space usage
, 이메일 보내기 등등.cron 작업은 분, 시간, 월일, 월일, 일요일 또는 그 이상의 임의의 조합 계획에 따라 실행할 수 있습니다.

Crontab 파일

Crontab(cron table)은cron 작업의 시간표를 지정하는 텍스트 파일입니다.두 가지 종류의crontab 파일이 있습니다.시스템 범위의crontab 파일과 단일 사용자crontab 파일입니다.사용자의 crontab 파일은 사용자 이름에 따라 이름이 지정되며, 그 위치는 운영체제에 따라 다르다.Red Hat 기반 릴리스(예: CentOS)에서crontab 파일은 /var/spool/cron 디렉터리에 저장되고, Debian과 Ubuntu에서는 /var/spool/cron/crontabs 디렉터리에 저장됩니다.사용자crontab 파일을 수동으로 편집할 수 있지만 crontab 명령을 사용하는 것이 좋습니다./etc/crontab 파일과 /etc/cron.d 디렉터리의 스크립트는 시스템 범위의crontab 파일로 시스템 관리자만 편집할 수 있습니다.대부분의 Linux 릴리스에서는 /etc/cron.{hourly,daily,weekly,monthly} 디렉터리에 스크립트를 놓을 수 있으며, 스크립트는 hour/day/week/month 마다 한 번씩 실행됩니다.

Crontab 구문 및 연산자

사용자crontab 파일의 줄마다 6개의 필드가 포함되어 있으며, 이 필드들은 공백으로 구분되어 실행될 명령과 같습니다.
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
앞의 다섯 필드에는 쉼표로 구분하거나 하이픈으로 구분된 일련의 값이 하나 이상 포함될 수 있습니다.
  • * - 별표 연산자는 모든 값을 나타냅니다.시간 필드에 별표가 있으면 작업이 한 시간에 한 번씩 수행됩니다.
  • , - 쉼표 연산자를 사용하여 중복된 값 목록을 지정할 수 있습니다.예를 들어, 시간 필드에 1,3,5 이 있는 경우 작업은 새벽 1시, 새벽 3시, 새벽 5시에 실행됩니다.
  • - - 하이픈 연산자를 사용하여 값의 범위를 지정할 수 있습니다."요일"필드에 1-5 이 있는 경우 작업은 매주 월요일부터 금요일까지 실행됩니다.
  • / - 사선 연산자를 사용하여 둘 사이의 특정 간격 내에 중복될 값을 지정할 수 있습니다.예를 들어, 시간 필드에 */4 이 있으면 4시간마다 작업이 수행됩니다.지정0,4,8,12,16,20과 같습니다.슬래시 연산자 앞의 별표를 제외하고 일련의 값을 사용할 수 있으며, 1-30/10 의 의미는 1,11,21 의 의미와 같다.
  • 시스템 범위의 Crontab 파일

    시스템 범위의crontab 파일의 문법은 사용자crontab와 약간 다르다.이것은 cron 작업을 실행할 사용자를 지정하는 추가 강제 사용자 필드를 포함합니다.
    * * * * * <username> command(s)
    

    미리 정의된 매크로

    에는 공통 간격을 지정하는 데 사용되는 몇 가지 특수한 Cron schedule 매크로가 있습니다.이 단축키를 사용하여 5열 날짜 규범을 대체할 수 있습니다.
  • @yearly(또는@annually - 매년 1월 1일 자정(오전 12:00)에 지정된 작업을 실행합니다.에 해당합니다.
  • 0 0 1 1 * - 매월 첫날 자정에 한 번씩 지정된 작업을 실행합니다.에 해당합니다.
  • @monthly - 매주 일요일 자정에 지정된 작업을 실행합니다.에 해당합니다.
  • 0 0 1 * * - 매일 자정에 지정된 작업을 실행합니다.에 해당합니다.
  • @weekly - 한 시간마다 지정된 작업을 실행합니다.에 해당합니다.
  • 0 0 * * 0 - 시스템이 시작될 때(시작할 때) 지정된 작업을 실행합니다.
  • Linux Crontab 명령

    @daily 명령을 사용하여 설치할 수 있습니다. view
    또는 crontab 파일을 열어 편집합니다.
  • 0 0 * * * - crontab 파일을 편집하거나,crontab 파일을 만듭니다.
  • @hourly - crontab 파일 내용을 표시합니다.
  • 0 * * * * - 현재crontab 파일을 삭제합니다.
  • @reboot - 삭제하기 전에 현재crontab 파일을 삭제하라는 메시지를 표시합니다.
  • crontab - 다른 사용자crontab 파일을 편집합니다.이 옵션은 시스템 관리자 권한이 필요합니다.
  • crontab 명령은 crontab -e 또는 crontab -l 환경 변수가 지정한 편집기를 사용하여crontab 파일을 엽니다.

    Crontab 변수

    cron 데몬이 자동으로 여러 개 설정environment variables
    .
  • 기본 경로는 crontab -r 로 설정됩니다.실행 중인 명령이cron이 지정한 경로에 없으면 명령의 절대 경로를 사용하거나 cron crontab -i 변수를 변경할 수 있습니다.암시적으로 사용할 수 없음 append crontab -u <username>
    네가 해서를 쓰는 것처럼.
  • 기본 셸은 VISUAL 로 설정됩니다.다른 셸을 변경하려면 EDITOR 변수를 사용합니다.
  • Cron은 사용자의 홈 디렉토리에서 명령을 호출합니다.PATH=/usr/bin:/bin 변수는crontab에서 설정할 수 있습니다.
  • 전자메일 알림은crontab의 소유자에게 발송됩니다.기본 비헤이비어를 덮어쓰려면 환경 변수 $PATH 와 전자 메일 알림을 받을 모든 전자 메일 주소 목록 (쉼표로 구분) 을 사용합니다.정의되어 있지만 비어 있는 경우 :$PATH 메일을 보내지 않습니다.
  • Crontab 제한 사항

    /bin/shSHELL 파일에서 사용자가 액세스할 수 있는 명령을 제어할 수 있습니다.이 파일들은 사용자 이름 목록으로 구성되어 있으며, 줄마다 사용자 이름이 하나씩 있습니다.기본적으로 HOMEfile exists
    그리고 비어 있습니다. 이것은 모든 사용자가crontab 명령을 사용할 수 있음을 의미합니다.특정 사용자가crontab 명령에 접근하는 것을 거부하려면 사용자 이름을 이 파일에 추가하십시오.MAILTO 파일이 있는 경우 이 파일에 나열된 사용자만 MAILTO 명령을 사용할 수 있습니다.두 파일 모두 존재하지 않으면 MAILTO="" 명령은 관리 권한이 있는 사용자만 사용할 수 있습니다.(adsbygoogle=window.adsbygoogle | |[]).푸시({});

    Cron 작업 예

    다음은cron 작업 예시로 임무를 서로 다른 시간대에 어떻게 실행하는지 보여 줍니다.
  • 월요일부터 금요일까지 매일 15:00 명령 실행:
    0 15 * * 1-5 command
  • 스크립트 실행every 5 minutes
    표준 출력을 /etc/cron.deny로 재설정하고 표준 오류만 지정된 전자 메일 주소로 보냅니다.
    [email protected]
    */5 * * * * /path/to/script.sh > /dev/null
  • 매주 월요일 오후 3시에 두 개의 명령을 실행합니다(명령 간에 연산자 사용/etc/cron.allow:
    0 15 * * Mon command1 && command2
  • 2분마다 PHP 스크립트 실행, write the output to a file
    :
    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
  • 오전 8시부터 오후 4시까지 매일, 매시간, 매시간 스크립트 실행:
    00 08-16 * * * /path/to/script.sh
  • 매월 첫째 월요일 오전 7시에 스크립트 실행.
    0 7 1-7 * 1 /path/to/script.sh
  • 매월 첫째와 열다섯 번째 밤 9시 15분에 스크립트 실행:
    15 9 1,15 * * /path/to/script.sh
  • 사용자 정의crontab 설정, /etc/cron.deny/etc/cron.allowcrontab 변수는 분당 명령을 실행합니다.
    HOME=/opt
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/usr/bin/zsh
    [email protected]
    
    */1 * * * * command
  • 결론

    Cron은 특정 날짜와 시간에 작업을 배정할 수 있는 수호 프로그램입니다.질문이 있으시면 언제든지 논평을 주십시오.