>  기사  >  php教程  >  Linux/UNIX 예약 작업 cron에 대한 자세한 설명

Linux/UNIX 예약 작업 cron에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-01 14:05:431371검색

Cron 작업은 주기적으로 실행해야 하는 명령을 예약하는 데 사용됩니다. 이를 사용하면 특정 명령이나 스크립트가 설정된 시간 내에 주기적으로 실행되도록 구성할 수 있습니다. cron은 Linux 또는 Unix 계열 시스템에서 가장 유용한 도구 중 하나입니다. cron 서비스(데몬)는 시스템 백그라운드에서 실행되며 /etc/crontab 파일과 /etc/cron.*/ 디렉터리를 지속적으로 확인합니다. 또한 /var/spool/cron/ 디렉토리도 확인합니다.

crontab 명령

crontab은 예약된 작업을 설치, 제거 또는 나열하는 데 사용되는 명령입니다. cron 구성 파일은 Vixie Cron의 cron(8) 데몬을 구동하는 데 사용됩니다. 각 사용자는 자신만의 crontab 파일을 가질 수 있습니다. 이러한 파일은 /var/spool/cron/crontabs 디렉터리에 있지만 이것이 직접 편집할 수 있다는 의미는 아닙니다. crontab 명령을 통해 자신만의 예약된 작업을 편집하거나 구성해야 합니다.

예약된 구성 파일 유형

구성 파일은 다음과 같은 유형으로 구분됩니다.

UNIX 또는 Linux용 시스템 수준 crontab: 이 유형은 일반적으로 다음과 같은 사용자가 사용합니다. 루트 또는 유사한 권한 시스템 서비스 및 중요한 작업이 필요합니다. 여섯 번째 필드(아래 필드 소개 참조)는 이 명령이 실행되는 사용자 ID를 지정하는 데 사용되는 사용자 이름입니다. 이러한 방식으로 시스템의 crontab은 모든 사용자로서 작업을 수행할 수 있습니다.

사용자의 crontab: 사용자는 crontab 명령을 사용하여 자신의 예약된 작업을 설치할 수 있습니다. 여섯 번째 필드는 실행해야 하는 명령입니다. 모든 명령은 crontab 작업을 생성한 사용자로 실행됩니다.

참고: 이 Q&A Cron 구현은 Paul Vixie가 작성했으며 많은 Linux 배포판 및 Unix 계열 시스템(예: 널리 사용되는 BSD 4번째 버전)에 포함되어 있습니다. 해당 구문은 다양한 crond 구현과 호환됩니다.

그렇다면 예약된 작업을 직접 설치, 생성 또는 편집하려면 어떻게 해야 합니까?

crontab 파일을 편집하려면 Linux 또는 Unix 쉘 프롬프트에서 다음 명령을 입력하십시오.

$ crontab -e

crontab 구문(필드 소개)

구문은 다음과 같습니다.

1 2 3 4 5 /path/to/command arg1 arg2

또는

1 2 3 4 5 /root/ntp_sync.sh

그 중:

첫 번째 필드: 분(0-59)

두 번째 필드: 시간(0-23)

세 번째 필드: 날짜(0-31)

네 번째 필드: 월(0-12 [12는 12월을 나타냄])

5번째 필드 필드: 일 주(0-7 [7 또는 0은 일요일을 나타냄])

/path/to/command – 실행될 스크립트 또는 명령의 이름

기억하기 쉬운 형식:

* * * * 실행할 명령
---| 주(0 - 7)(일요일은 0 또는 7)
| ------ 월(1 - 12)| (1 - 31) | ---------- 시간(0 - 23)
------------ 분(0 - 59)

간단한 crontab 예:

### 5분마다 백업 스크립트 스크립트 실행 ##*/5 * * * * /root/backupscript.sh### 매일 오전 1시 백업 스크립트 스크립트 실행 # #0 1 * * * /root/backupscript.sh### 매월 첫째 날 오전 3시 15분에 백업 스크립트 스크립트를 실행합니다. ##15 3 1 * * /root/backupscript.sh


연산자 사용 방법

연산자를 사용하면 필드에 여러 값을 지정할 수 있습니다. 사용 가능한 연산자는 세 가지가 있습니다.

Asterix(*): 이 연산자는 사용 가능한 모든 값을 지정합니다. ​​분야용. 예를 들어, 시간 필드에서 별표는 각 시간에 해당하고, 월 필드에서 별표는 각 월에 해당합니다.

쉼표(,): 이 연산자는 여러 값이 포함된 목록을 지정합니다(예: 1,5,10,15,20,25).

말(-): 이 연산자는 값 범위(예: 5-15)는 쉼표 연산자를 사용하여 5,6,7,8,9,…,13,14,15를 입력하는 것과 같습니다.

구분 기호(/): 이 연산자는 단계 값을 지정합니다. 예를 들어 0-23/을 시간 필드에 사용하여 특정 명령이 매시간 실행되도록 지정할 수 있습니다. 단계 값 뒤에 별표 연산자가 올 수도 있습니다. 명령줄을 2시간마다 실행하려면 */2를 사용하면 됩니다.

이메일 출력 비활성화 방법

기본적으로 명령이나 스크립트(있는 경우)의 출력은 로컬 이메일 계정으로 전송됩니다. crontab에서 보낸 이메일 수신을 중지하려면 실행된 명령 끝에 >/dev/null 2>&1을 추가해야 합니다. 예:

0 3 * * * /root/backup .sh > ;/dev/null 2>&1

출력 콘텐츠를 vivek@nixcraft.in과 같은 특정 이메일 계정으로 보내려면 MAILTO 변수를 다음과 같이 정의해야 합니다. 다음:

MAILTO="vivek@nixcraft.in"0 3 * * * /root/backup.sh >/dev/null 2>&1

"비활성화"에 액세스 자세한 내용은 Crontab 명령 이메일 경고'를 참조하세요.

작업: 예약된 작업을 모두 나열합니다.

다음 명령을 입력합니다.

# crontab -l# crontab -u 사용자 이름 -l

예약된 작업을 모두 삭제하려면 다음 명령을 사용할 수 있습니다.

### 현재 예약된 작업 삭제 crontab -r
### 특정 사용자 이름으로 예약된 작업을 삭제합니다. root user ID 실행 crontab -r -u 사용자 이름

시간 절약을 위해 특수 문자열 사용

다음 8개의 특수 문자열 중 하나를 사용하여 처음 5개 필드를 다음과 같이 바꿀 수 있습니다. 시간을 절약할 뿐만 아니라 가독성도 향상됩니다.

Linux/UNIX 예약 작업 cron에 대한 자세한 설명

예:

매시간 ntpdate 명령 실행

@hourly /path/to/ntpdate

/etc/crontab 파일 및 /etc/cron.d/* 디렉토리에 대한 추가 정보

/etc/crontab은 시스템의 crontab 파일입니다. 일반적으로 루트 사용자나 데몬이 시스템 수준 작업을 구성하는 데만 사용됩니다. 각 개별 사용자는 위에서 설명한 대로 crontab 명령을 사용하여 자신의 작업을 설치하고 편집해야 합니다. /var/spool/cron/ 또는 /var/cron/tabs/ 디렉토리에는 개별 사용자의 crontab 파일이 저장되며, 이 파일은 사용자의 홈 디렉토리에 백업되어야 합니다.

기본 /etc/crontab 파일 이해

일반적인 /etc/crontab 파일 내용은 다음과 같습니다.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

먼저 환경 변수를 정의해야 합니다. SHELL 행을 생략하면 cron은 기본 sh 쉘을 사용합니다. PATH 변수를 생략하면 기본 검색 경로가 없으며 모든 파일을 절대 경로를 사용하여 찾아야 합니다. HOME 변수가 생략되면 cron은 대신 호출자(사용자)의 홈 디렉터리를 사용합니다.

또한 cron은 /etc/cron.d/ 디렉터리에 있는 파일을 읽습니다. 일반적으로 sa-update 또는 sysstat와 같은 시스템 데몬은 예약된 작업을 여기에 저장합니다. 루트 사용자 또는 슈퍼 사용자는 다음 디렉터리를 사용하여 예약된 작업을 구성할 수 있습니다. 여기에 스크립트를 넣으면 됩니다. run-parts 명령은 /etc/crontab 파일을 통해 특정 디렉토리에 있는 스크립트나 프로그램을 실행합니다.

Linux/UNIX 예약 작업 cron에 대한 자세한 설명

백업 예약 작업

# crontab -l > /path/to/file# crontab -u user -l > 파일


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.