Computer >> 컴퓨터 >  >> 체계 >> Linux

CentOS/RHEL Linux에서 Crontab을 사용하여 Cron 작업 구성

Cron은 모든 Linux 배포판을 포함한 Unix 기반 시스템용 작업 스케줄러입니다. cron 데몬은 호스트의 백그라운드에서 작동하고 일정에 따라 예약된 작업을 실행합니다. 이 기사에서는 cron을 설치하는 방법을 보여줍니다. CentOS 또는 RHEL Linux를 실행하는 서버에서 cron 구문을 배우고 crontab으로 cron 작업을 예약하십시오.

Cronos를 Centos 또는 RHEL Linux에 설치하는 방법

기본적으로 크론 RHEL 또는 CentOS 설치 직후에 사용할 수 있습니다. 어떤 이유에서인지 없으면 yum 또는 dnf 명령을 사용하여 기본 저장소에서 설치할 수 있습니다.

# dnf update -y — 호스트의 모든 패키지를 업데이트하려면
# dnf install crontabs -y — cron 설치

CentOS/RHEL Linux에서 Crontab을 사용하여 Cron 작업 구성

crond 데몬을 활성화하고 설치 후 실행:

# systemctl enable crond.service
# systemctl start crond.service

Crontab으로 Cron 작업을 추가하는 방법

다음 명령을 사용하여 cron에 작업을 추가할 수 있습니다.

# crontab -e

이 명령은 기본 텍스트 편집기(vim 내 경우에는 더 편리한 것으로 변경할 수 있습니다(예:nano). ). 작업을 구성하는 이 방법은 구문 오류를 방지합니다. Crontab에서는 오류가 포함된 구성 파일을 저장할 수 없습니다.

mc:

에서 수동으로 cron 작업 파일을 편집할 수도 있습니다.

# mcedit /var/spool/cron/root – 파일명은 사용자에 따라 다를 수 있습니다.

cron에서 bash 스크립트를 실행하는 간단한 작업을 추가하려면 다음 명령을 입력하십시오.

# crontab -e

그런 다음 작업 일정과 스크립트 파일 경로를 추가합니다.

* * * * * /root/test.sh

파일 저장(vim에서 편집과 유사:Ctrl+O 누르기 파일을 저장하고 Ctrl+X 종료).

올바르게 수행했다면 작업이 cron에 추가됩니다. cron 작업 목록을 표시하려면 다음 명령을 실행하십시오.

# cat /var/spool/cron/root

* * * * * /root/test.sh

또는 이것:

# crontab -l

이 스크립트는 1분마다 cron을 통해 실행됩니다.

최소 시간은 1분입니다. cron 데몬은 1분에 한 번씩 작업 목록을 검색합니다. 다음 파일과 디렉터리를 확인합니다.

/etc/crontab
/etc/cron.*/.
/var/spool/cron/

각 crontab 일정 항목은 5개의 필드로 구성됩니다.

minutes hours day_of_a_month months week_day
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

CentOS/RHEL Linux에서 Crontab을 사용하여 Cron 작업 구성

각 필드에 대해 다음과 같은 유효한 값을 사용할 수 있습니다.

필드 값 범위
0-59
시간 0-23
날짜 1-31
1-12 또는 jan feb mar apr may jun jul aug sep oct nov dec
요일 0-6 (여기서 0 일요일) 또는 sun mon tue wed thu fri sat

* 문자는 허용되는 모든 값을 의미합니다. 다음은 샘플 작업입니다.

30 00 * * 1 /root/test.sh

작업의 스크립트는 매주 월요일 오전 00:30에 실행됩니다.

cron 파일 구문을 더 쉽게 만들기 위해 일부 특수 문자가 사용됩니다.

  • 쉼표(,) 서로 다른 시간에 동일한 작업을 실행하기 위해 일정 값을 분리하는 데 사용됩니다. 예를 들어 매시 15분과 30분에 작업을 실행하려면 다음과 같이 일정을 설정할 수 있습니다.
15 * * * *
30 * * * *

또는 쉼표와 함께 더 짧은 구문을 사용합니다.

15,30 * * * *
  • 슬래시(/) 작업을 반복하는 데 사용됩니다. 예를 들어 2시간마다 작업을 실행하려고 합니다. /를 사용하면 cron 파일의 내용이 훨씬 짧아집니다. 그렇지 않으면 상당히 깁니다.
* */2 * * *
  • 하이픈(-) 필드의 값 범위를 나타냅니다. 한 시간의 처음 10분 또는 마지막 10분 동안 작업을 실행하려면 하이픈을 사용하여 범위를 지정하십시오.
0-10 * * * *
50-60 * * * *

다음은 cron 일정의 몇 가지 예입니다.

  • 평일 오후 12:00 및 오후 6:00에 실행: 0 12,18 * * 1-5
  • 30분마다:*/30 * * * *
  • 매주 토요일:0 0 * * 6
  • 매주 화요일과 목요일 오전 2:00:0 2 * * 2,4

cron에서 특수 변수를 사용할 수도 있습니다.

변수 설명 구문
@reboot 부팅 시 한 번 실행
@yearly

또는

@annually

1년에 한 번 0 0 1 1 *
@monthly 한 달에 한 번 0 0 1 * *
@weekly 주 1회 0 0 * * 0
@daily 매일 0 0 * * *
@hourly 매시간 0 * * * *
@midnight 자정

매일 작업을 실행하려면 다음 cron 구문을 사용할 수 있습니다.

@daily echo "Cron check"

다른 사용자의 crontab 파일을 편집할 수 있습니다.

# crontab -u username

Cron 알림을 이메일로 보내는 방법

crontab 작업 실행에 대한 정보를 이메일로 받으려면 작업과 함께 cron 파일을 구성해야 합니다.

이메일을 보내려면 서버에 메일 에이전트가 설치되어 있어야 합니다. 테스트를 하기 위해 sendmail을 설치했습니다. 내 Linux 호스트에서:

# dnf install sendmail -y
# service sendmail start

cron 파일에 이메일을 보내도록 매개변수를 구성해 보겠습니다. 파일에 다음 줄을 추가합니다.

MAILTO="youremail@gmail.com"
SHELL=/bin/bash
HOME=/
* * * * * echo "Cron check"

SHELL — 사용자 쉘

HOME — cron 파일의 경로

CentOS/RHEL Linux에서 Crontab을 사용하여 Cron 작업 구성

크론 작업이 시작될 때마다 이메일 알림이 사서함으로 전송됩니다.

cron 작업 실행에 대한 정보를 로그 파일에 저장할 수 있습니다. 이를 수행하려면 >>를 추가하세요. 파일 끝에 로그 파일 경로를 입력하십시오:

* * * * * echo "Cron check" >> /var/log/admin/journal.log

crontab 파일에 많은 작업이 있고 그 중 일부의 결과를 이메일로 받고 싶지 않다면 다음 작업을 자동 모드로 실행할 수 있습니다.

* * * * * echo "Cron check" >> /dev/null 2>&1

Cron 구성 파일 및 로그

주요 cron 구성 파일은 /etc/crontab입니다. cron 파일 외에도 다음 디렉토리에서 작업을 실행할 수 있습니다.

  • /etc/cron.daily – 하루에 한 번 스크립트 시작
  • /etc/cron.hourly – … 한 시간에 한 번
  • /etc/cron.monthly – … 한 달에 한 번
  • /etc/cron.weekly – … 일주일에 한 번

일정에 따라 실행하려면 스크립트 파일을 디렉토리 중 하나에 넣으면 됩니다.

/etc/cron.allow 및 /etc/cron.deny를 사용하여 스케줄러에 대한 액세스를 제한할 수 있습니다. 이러한 파일을 만들고 cron 작업 실행이 허용되거나 거부된 사용자를 추가하는 것으로 충분합니다.

/etc/crontab에 작업을 추가할 수 있습니다. 또한. 일반적으로 파일은 루트 사용자가 사용하거나 시스템 작업을 구성하는 데 사용됩니다. cron 작업의 개인 사용자 파일은 /var/spool/cron/에 저장됩니다. 또는 /var/cron/tabs/ .

크론 작업이나 오류를 추적하려면 /var/log/cron 로그 파일을 볼 수 있습니다. . 이 파일은 데몬 작업의 모든 작업과 오류(있는 경우)를 기록합니다.

CentOS/RHEL Linux에서 Crontab을 사용하여 Cron 작업 구성