기계적 인조 인간

crontab을 사용하여 cron 작업 스케줄링

Запуск задач по расписанию linux. Cron и его маленький секрет

Запуск задач по расписанию linux. Cron и его маленький секрет

차례:

Anonim

Cron은 지정된 간격으로 작업을 실행하는 예약 데몬입니다. 이러한 작업을 크론 작업이라고하며 대부분 시스템 유지 관리 또는 관리를 자동화하는 데 사용됩니다.

예를 들어, 데이터베이스 또는 데이터 백업, 최신 보안 패치로 시스템 업데이트, 디스크 공간 사용량 확인, 이메일 전송 등과 같은 반복적 인 작업을 자동화하도록 cron 작업을 설정할 수 있습니다. Drupal 또는 Magento와 같은 일부 응용 프로그램에서는 특정 작업을 수행하기 위해 cron 작업이 필요합니다.

크론 작업은 분, 시간, 일, 월, 요일 또는 이들의 조합으로 실행되도록 스케줄 될 수 있습니다.

Crontab 파일이란 무엇입니까

크론 탭 (크론 테이블)은 크론 작업 일정을 지정하는 텍스트 파일입니다. crontab 파일에는 두 가지 유형이 있습니다. 시스템 전체 crontab 파일 및 개별 사용자 crontab 파일

사용자 crontab 파일은 사용자 이름으로 저장되며 해당 위치는 운영 체제에 따라 다릅니다. CentOS와 같은 Red Hat 기반 시스템에서 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)

처음 5 개의 필드는 쉼표로 구분 된 하나 이상의 값 또는 하이픈으로 구분 된 값 범위를 포함 할 수 있습니다.

  • * -별표 연산자는 모든 값 또는 항상을 의미합니다. 시간 필드에 별표 기호가 있으면 작업이 매시간 수행됨을 의미합니다. , -쉼표 연산자를 사용하면 반복 할 값 목록을 지정할 수 있습니다. 예를 들어 시간 필드에 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 작업을 실행할 사용자를 지정하는 추가 필수 사용자 필드를 포함합니다.

* * * * * command(s) * * * * * command(s)

미리 정의 된 매크로

공통 간격을 지정하는 데 사용되는 몇 가지 특수 Cron 스케줄 매크로가 있습니다. 5 열 날짜 지정 대신이 바로 가기를 사용할 수 있습니다.

  • @yearly (또는 @annually )-1 월 1 일 자정 (오전 12시)에 지정된 작업을 연 1 회 실행합니다. 0 0 1 1 * 와 같습니다. @monthly -매월 1 일 자정에 한 달에 한 번 지정된 작업을 실행합니다. 0 0 1 * * 와 같습니다. @weekly 일요일 자정에 일주일에 한 번 지정된 작업을 실행합니다. 0 0 * * 0 . @daily 자정에 하루에 한 번 지정된 작업을 실행합니다. 0 0 * * * 와 같습니다. @hourly 시간 시작시 한 시간에 지정된 작업을 실행합니다. 0 * * * * 와 같습니다. @reboot 시스템 시작시 (부팅시) 지정된 작업을 실행합니다.

리눅스 Crontab 명령

crontab 명령을 사용하면 편집 할 crontab 파일을 설치하거나 열 수 있습니다.

crontab 명령을 사용하여 다음 옵션을 사용하여 cron 작업을 보거나 추가, 제거 또는 수정할 수 있습니다.

  • crontab -e -crontab 파일을 편집하거나 존재하지 않는 경우 파일을 만듭니다. crontab -l -crontab 파일 내용을 표시합니다. crontab -r 현재 crontab 파일을 제거하십시오. crontab -i 제거하기 전에 프롬프트로 현재 crontab 파일을 제거하십시오. crontab -u -다른 사용 crontab 파일을 편집하십시오. 시스템 관리자 권한이 필요합니다.

crontab 명령은 VISUAL 또는 EDITOR 환경 변수로 지정된 편집기를 사용하여 crontab 파일을 엽니 다.

크론 탭 변수

cron 데몬은 여러 환경 변수를 자동으로 설정합니다.

  • 기본 경로는 PATH=/usr/bin:/bin 있습니다. 호출중인 명령이 cron 지정 경로에 있으면 명령의 절대 경로를 사용하거나 cron $PATH 변수를 변경할 수 있습니다. 일반 스크립트에서와 같이 암시 적으로 :$PATH 를 추가 할 수 없습니다 :$PATH 기본 쉘은 /bin/sh 설정됩니다. SHELL 변수를 변경하여 다른 쉘을 설정할 수 있습니다 SHELL 은 사용자의 홈 디렉토리에서 명령을 호출합니다. HOME 변수는 crontab의 설정으로 재정의 할 수 있습니다. 전자 메일 알림은 crontab의 소유자에게 전송됩니다. 기본 동작을 덮어 MAILTO 려면 MAILTO 환경 변수를 이메일 알림을 수신하려는 모든 이메일 주소 목록 (쉼표로 구분)과 함께 사용할 수 있습니다. MAILTO 가 정의되었지만 비어있는 경우 ( MAILTO="" ) 메일이 전송되지 않습니다.

크론 탭 제한

시스템 관리자는 /etc/cron.deny /etc/cron.allow 파일을 사용하여 crontab 명령에 액세스 할 수있는 사용자를 제어 할 수 있습니다. 파일은 한 줄에 하나씩 사용자 이름 목록으로 구성됩니다.

기본적으로 /etc/cron.deny 파일 만 존재하며 비어 있습니다. 즉, 모든 사용자가 crontab 명령을 사용할 수 있습니다. 특정 사용자에 대한 crontab 명령에 대한 액세스를 거부하려면이 파일에 사용자 이름을 추가하십시오.

/etc/cron.allow 파일이 존재하면이 파일에 나열된 사용자 만 crontab 명령을 사용할 수 있습니다.

파일이 없으면 관리 권한이있는 사용자 만 crontab 명령을 사용할 수 있습니다.

크론 작업 예

다음은 여러 기간에 작업이 실행되도록 예약하는 방법을 보여주는 일부 cron 작업 예입니다.

  • 월요일부터 금요일까지 매일 15:00에 명령을 실행하십시오.

    0 15 * * 1-5 command

    5 분마다 스크립트를 실행하고 표준 출력을 dev null 리디렉션하면 표준 오류 만 지정된 이메일 주소로 전송됩니다.

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    매주 월요일 오후 3시에 두 개의 명령을 실행하십시오 (명령 사이에 && 연산자 사용).

    0 15 * * Mon command1 && command2

    2 분마다 PHP 스크립트를 실행하고 출력을 파일에 작성하십시오.

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    오전 8 시부 터 오후 4 시까 지 매일 1 시간마다 스크립트를 실행하십시오.

    00 08-16 * * * /path/to/script.sh

    매월 첫째 월요일 오전 7시에 스크립트를 실행하십시오.

    0 7 1-7 * 1 /path/to/script.sh

    매월 1 일과 15 일 오후 9시 15 분에 스크립트를 실행하십시오.

    15 9 1, 15 * * /path/to/script.sh

    사용자 정의 HOME , PATH , SHELL MAILTO 변수를 설정하고 1 분마다 명령을 실행하십시오.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

결론

특정 날짜 및 시간에 크론 작업을 작성하고 작업을 예약하는 방법을 배웠습니다.

궁금한 점이 있으면 언제든지 의견을 남겨주십시오.

크론 크론 탭 터미널