>  기사  >  시스템 튜토리얼  >  Linux에서 작업 스케줄링은 두 가지 유형의 사용자 crontab 서비스로 나뉩니다.

Linux에서 작업 스케줄링은 두 가지 유형의 사용자 crontab 서비스로 나뉩니다.

WBOY
WBOY앞으로
2024-03-11 08:00:231212검색

먼저 다음 명령을 실행하세요.

1. 명령 형식:

crontab[-user]파일

crontab[-user][-e|-l|-r]

2. 명령 기능:

crontab 명령을 통해 지정된 시스템 명령이나 쉘스크립트 스크립트를 고정된 간격으로 실행할 수 있습니다. 시간 간격의 단위는 분, 시간, 일, 월, 주 또는 위의 조합일 수 있습니다. 이 명령은 정기적인 로그 분석이나 데이터 백업에 특히 적합합니다.

3. 명령 매개변수:

-user: 특정 사용자의 crontab 서비스를 설정하는 데 사용됩니다. 예를 들어 "-uixdba"는 ixdba 사용자의 crontab 서비스 설정을 의미합니다. 이 매개변수는 일반적으로 루트 사용자가 실행합니다.

file: file은 명령 파일의 이름으로, file이 crontab의 작업 목록 파일로 사용되고 crontab에 로드된다는 의미입니다. 이 파일이 명령줄에 지정되지 않은 경우 crontab 명령은 표준 입력(마우스)에 입력된 명령을 받아들이고 이를 crontab에 로드합니다.

-e: 사용자의 crontab 파일 내용을 편집합니다. 사용자를 지정하지 않으면 현재 사용자의 crontab 파일을 편집한다는 의미입니다.

-l: 특정 사용자의 crontab 파일 내용을 표시합니다. 사용자를 지정하지 않으면 현재 사용자의 crontab 파일 내용을 표시합니다.

-r: /var/spool/cron 디렉터리에서 사용자의 crontab 파일을 삭제합니다. 사용자가 지정되지 않으면 기본적으로 현재 사용자의 crontab 파일이 삭제됩니다.

-i: 사용자의 crontab 파일을 삭제할 때 확인 메시지를 표시합니다.

자세한 내용:

1. 크론드 소개

crond는 Linux에서 특정 작업을 주기적으로 수행하거나 개별 사건 처리를 기다리는 데 사용되는 데몬 프로세스입니다. Windows의 예약된 작업과 유사하며 이 서비스 도구는 기본적으로 설치되며 수동으로 시작됩니다. crond 프로세스는 1분마다 실행할 작업이 있는지 정기적으로 감지합니다.

Linux의 작업 스케줄링은 시스템 작업 스케줄링과 사용자 작업 스케줄링의 두 가지 범주로 나뉩니다.

시스템 작업 예약: 캐시된 데이터를 하드 디스크에 쓰기, 로그 지우기 등 시스템이 주기적으로 수행하는 작업입니다. /etc 디렉토리에는 시스템 작업 스케줄링을 위한 구성 파일인 crontab 파일이 있습니다.

/etc/crontab 파일에는 다음 줄이 포함됩니다:

[root@localhost~]#cat/etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=""홈=/

#실행 부품

51****rootrun-parts/etc/cron.hourly

247***rootrun-parts/etc/cron.daily

224**0rootrun-parts/etc/cron.weekly

4241**rootrun-parts/etc/cron.monthly

[root@localhost~]#

처음 네 줄은 crond 작업을 실행하기 위한 환경 변수를 구성하는 데 사용됩니다. 첫 번째 줄의 SHELL 변수는 시스템이 사용할 쉘을 지정합니다. 두 번째 줄의 PATH 변수는 시스템 경로를 지정합니다. 세 번째 줄의 MAILTO 변수는 crond에 지정된 작업 실행 정보가 이메일을 통해 루트 사용자에게 전송됩니다. MAILTO 변수의 값이 비어 있으면 작업 실행 정보가 전송되지 않습니다. 네 번째 줄의 HOME 변수는 명령이나 스크립트의 홈 디렉터리를 실행할 때 사용되는 값을 지정합니다. 6~9행이 표현하는 의미는 다음 절에서 자세히 설명합니다. 여기서는 별로 할 말이 없습니다.

사용자 작업 예약: 사용자 데이터 백업, 정기 이메일 알림 등 사용자가 정기적으로 수행해야 하는 작업입니다. 사용자는 crontab 도구를 사용하여 자신의 예약된 작업을 사용자 정의할 수 있습니다. 모든 사용자 정의 crontab 파일은 /var/spool/cron 디렉토리에 저장됩니다. 파일 이름은 사용자 이름과 일치합니다.

사용자 권한 파일:

파일:

/etc/cron.deny

설명:

이 파일에 나열된 사용자는 crontab 명령을 사용할 수 없습니다

파일:

/etc/cron.allow

설명:

이 파일에 나열된 사용자는 crontab 명령을 사용할 수 있습니다

파일:

/var/spool/cron/

설명:

모든 사용자 crontab 파일이 저장되는 디렉토리는 사용자 이름을 따서 명명됩니다

crontab 파일의 의미:

사용자가 작성한 crontab 파일에서 각 줄은 작업을 나타내고, 각 줄의 각 배열은 6개의 배열로 구분됩니다. 처음 5개 세그먼트는 시간 설정 세그먼트이고, 여섯 번째 세그먼트는 실행될 명령 세그먼트의 형식은 다음과 같습니다.

분시간일월주명령

그 중:

분: 분을 나타내며 0에서 59 사이의 정수일 수 있습니다.

hour: 시간을 나타내며 0에서 23 사이의 정수일 수 있습니다.

day: 날짜를 나타내며 1부터 31까지의 정수일 수 있습니다.

월: 월을 나타내며 1에서 12 사이의 정수일 수 있습니다.

week: 요일을 나타내며 0에서 7 사이의 정수일 수 있습니다. 여기서 0 또는 7은 일요일을 나타냅니다.

명령: 실행할 명령은 시스템 명령일 수도 있고 직접 컴파일한 스크립트 파일일 수도 있습니다.

위의 각 배열에는 다음 특수 문자도 사용할 수 있습니다.

별표(*): 가능한 모든 값을 나타냅니다. 예를 들어 월 배열이 별표인 경우 다른 배열의 차단 조건이 충족된 후 매월 명령 작업이 실행된다는 의미입니다.

콜론(,): 콜론으로 구분된 값을 사용하여 목록 범위를 지정할 수 있습니다(예: "1,2,5,7,8,9")

Zhongdong (-): 정수 사이에 중간 막대를 사용하여 정수 범위를 나타낼 수 있습니다Linux 예약 작업은 실행되지 않습니다. 예를 들어 "2-6"은 "2,3,4,5,6"을 의미합니다

슬래시(/): 슬래시를 사용하여 시간 간격 빈도를 지정할 수 있습니다. 예를 들어 "0-23/2"는 2시간마다 실행됨을 의미합니다. 동시에 */10과 같이 별표와 함께 슬래시를 사용할 수 있습니다. 분 배열에 사용하면 10분마다 실행된다는 의미입니다.

2.크론드 서비스

크론탭 설치:

yuminstallcrontabs

서비스 운영 지침:

/sbin/servicecrondstart//서비스 시작

/sbin/servicecrondstop//서비스 끄기

/sbin/servicecrondrestart//서비스 다시 시작

/sbin/servicecrondreload//구성 다시 로드

crontab 서비스 상태 확인:

servicecrondstatus

linux任务计划不生效_linux任务计划执行脚本_linux 计划任务没执行

crontab 서비스 자동 시작:

servicecrondstart

부팅 시 crontab 서비스가 시작되도록 설정되었는지 확인하고 다음 명령을 실행하세요.

ntsysv

부팅 시 수동 시작 추가:

chkconfig–level35crondon

3.crontab 명령 해석

1. 명령 형식:

crontab[-user]파일

crontab[-user][-e|-l|-r]

2. 명령 기능:

crontab 명령을 통해 지정된 시스템 명령이나 쉘스크립트 스크립트를 고정된 간격으로 실행할 수 있습니다. 시간 간격의 단위는 분, 시간, 일, 월, 주 또는 위의 조합일 수 있습니다. 이 명령은 정기적인 로그 분석이나 데이터 백업에 특히 적합합니다.

3. 명령 매개변수:

-user: 특정 사용자의 crontab 서비스를 설정하는 데 사용됩니다. 예를 들어 "-uixdba"는 ixdba 사용자의 crontab 서비스 설정을 의미합니다. 이 매개변수는 일반적으로 루트 사용자가 실행합니다.

file: file은 명령 파일의 이름으로, file이 crontab의 작업 목록 파일로 사용되고 crontab에 로드된다는 의미입니다. 이 파일이 명령줄에 지정되지 않은 경우 crontab 명령은 표준 입력(마우스)에 입력된 명령을 받아들이고 이를 crontab에 로드합니다.

-e: 사용자의 crontab 파일 내용을 편집합니다. 사용자를 지정하지 않으면 현재 사용자의 crontab 파일을 편집한다는 의미입니다.

-l: 특정 사용자의 crontab 파일 내용을 표시합니다. 사용자를 지정하지 않으면 현재 사용자의 crontab 파일 내용을 표시합니다.

-r: /var/spool/cron 디렉터리에서 사용자의 crontab 파일을 삭제합니다. 사용자가 지정되지 않으면 기본적으로 현재 사용자의 crontab 파일이 삭제됩니다.

-i: 사용자의 crontab 파일을 삭제할 때 확인 메시지를 표시합니다.

4. 일반적으로 사용되는 방법:

1).새 crontab 파일 만들기

crontab 파일을 cron 프로세스에 제출하는 것을 고려하기 전에 가장 먼저 해야 할 일은 환경 변수 EDITOR를 설정하는 것입니다. cron 프로세스는 이를 사용하여 crontab 파일을 편집하는 데 사용할 편집기를 결정합니다. UNIX 및 LINUX 사용자의 99%가 vi를 사용합니다. 이 경우에는 $HOME 디렉터리에서 .profile 파일을 편집합니다. Linux 예약 작업은 실행되지 않습니다. 여기에 다음 줄을 추가합니다.

EDITOR=vi;exportEDITOR

저장 후 종료하세요. 예를 들어 davecron과 같이 사용자 이름이 있는 cron이라는 파일을 생성할 수도 있습니다. 이 파일에 다음 내용을 추가합니다.

#(여기에 이니셜을 입력하세요)매번 콘솔에 날짜를 반영합니다

#오후 6시부터 오전 6시까지 15분

0,15,30,4518-06***/bin/echo'date'>/dev/console

저장하고 종료하세요. 다음 5개 필드가 공백으로 구분되어 있는지 확인하세요.

이전 예에서 시스템은 15분마다 현재 시간을 콘솔에 출력합니다. 시스템이 충돌하거나 멈춘 경우 마지막으로 표시된 시간부터 시스템이 작동을 멈춘 시간을 한눈에 알 수 있습니다. 일부 시스템에서는 tty1을 사용하여 콘솔을 표현하는데, 내부 예시는 실제 상황에 따라 변경될 수 있습니다. 방금 생성한 crontab 파일을 제출하려면 새로 생성된 이 파일을 cron 명령의 매개변수로 사용할 수 있습니다.

$크론타브다베크론

이제 파일이 15분마다 실행되는 cron 프로세스에 제출되었습니다.

동시에 새로 생성된 파일의 복사본이 /var/spool/cron 디렉터리에 저장되었으며 파일 이름은 사용자 이름(예: dave)입니다.

2) crontab 파일 나열

crontab 파일을 열거하려면 다음을 사용할 수 있습니다.

$crontab-l

0,15,30,45,18-06***/bin/echo`date`>dev/tty1

이전 내용과 유사한 내용이 표시됩니다. 다음 방법을 사용하여 $HOME 디렉터리에 crontab 파일을 백업할 수 있습니다.

$crontab-l>$HOME/mycron

이런 방법으로 crontab 파일을 실수로 삭제한 경우 이전 섹션에서 설명한 방법을 사용하면 빠르게 복원할 수 있습니다.

3).crontab 파일 편집

crontab 파일의 항목을 추가, 삭제 또는 편집하고 EDITOR 환경 변수가 vi로 설정된 경우 vi를 사용하여 crontab 파일을 편집할 수 있습니다.

$crontab-e

vi를 사용하여 다른 파일을 편집하는 것처럼 crontab 파일을 변경하고 종료할 수 있습니다. 개별 항목이 변경되거나 새 항목이 추가되면 cron은 파일을 저장할 때 파일에 대해 필요한 무결성 검사를 수행합니다. 필드 중 하나의 값이 허용 범위를 초과하면 메시지가 표시됩니다.

crontab 파일을 편집할 때 새 항목을 추가할 수 있습니다. 예를 들어 다음을 추가합니다.

#DT:월 1,7,14,21,26,26일 오전 3시 30분에 코어 파일 삭제

3031,7,14,21,26**/bin/find-name"core'-execrm{};

지금 저장하고 종료하세요. crontab 파일의 각 항목에 설명을 추가하여 해당 기능, 실행 시간 및 더 중요하게는 해당 작업이 어떤 사용자의 작업인지 알 수 있도록 하는 것이 가장 좋습니다.

이제 위에서 언급한 crontab-l 명령을 사용하여 모든 정보를 나열해 보겠습니다.

$crontab-l

#(crondave설치됨TueMay413:07:431999)

#DT:30분마다 콘솔에 날짜를 입력하세요

0,15,30,4518-06***/bin/echo`날짜`>/dev/tty1

#DT:월 1,7,14,21,26,26일 오전 3시 30분에 코어 파일 삭제

3031,7,14,21,26**/bin/find-name"core'-execrm{};

4).crontab 파일 삭제

crontab 파일을 삭제하려면 다음을 사용할 수 있습니다.

$crontab-r

5).손실된 crontab 파일 복구

$HOME 디렉터리에 백업이 있다고 가정하고 실수로 crontab 파일을 삭제한 경우 해당 파일을 /var/spool/cron/에 복사할 수 있습니다. 여기서 사용자 이름은 다음과 같습니다. 권한 문제로 인해 복사를 완료할 수 없는 경우 다음을 사용할 수 있습니다.

$크론탭

그 중 $HOME 디렉터리에 있는 복사본의 파일 이름이 있습니다.

이 파일의 복사본을 $HOME 디렉터리에 저장하는 것이 좋습니다. 비슷한 경험이 있었고 crontab 파일을 여러 번 삭제했습니다(r 키가 e 키 바로 왼쪽에 있기 때문입니다). 이것이 바로 일부 시스템 문서에서 crontab 파일을 직접 편집하지 말고 파일 사본을 편집한 다음 새 파일을 다시 제출하도록 권장하는 이유입니다.

일부 crontab 변형은 약간 이상하므로 crontab 명령을 사용할 때 주의하세요. 옵션을 생략하면 crontab이 빈 파일을 열거나 빈 파일로 나타날 수 있습니다. 이때 삭제 키를 눌러 종료하세요. 누르지 않으면 crontab 파일이 손실됩니다.

5. 사용 예

예제 1: 1분마다 명령 실행

명령:

*****명령

예시 2: 매시 3분, 15분에 실행

명령:

3,15****명령

인스턴스 3: 오후 8시부터 11시까지 3분, 15분에 실행

명령:

3,158-11***명령

예시 4: 7일마다 오전 8시부터 오전 11시까지 3분과 15분에 실행

명령:

3,158-11*/2**명령

예시 5: 매주 월요일 오전 8시부터 11시까지 3분, 15분에 실행

명령:

3,158-11**1명령

예 6: 저녁 21시 30분에 smb를 다시 시작

명령:

3021***/etc/init.d/smbrestart

인스턴스 7: 매월 1일, 10일, 22일 4시 45분에 smb를 다시 시작합니다

명령:

4541,10,22**/etc/init.d/smbrestart

예 8: 매주 토요일과 일요일 1시 10분에 smb를 다시 시작

명령:

101**6,0/etc/init.d/smbrestart

인스턴스 9: 매일 밤 18:00~23:00 사이에 30분마다 smb를 다시 시작합니다

명령:

0,3018-23***/etc/init.d/smbrestart

예 10: 매주 토요일 오후 11시에 smb를 다시 시작

명령:

023**6/etc/init.d/smbrestart

예 11: 매시간 smb를 다시 시작

명령:

**/1***/etc/init.d/smbrestart

예 12: 오전 11시부터 오후 7시까지 매시간 smb를 다시 시작하세요

명령:

*23-7/1***/etc/init.d/smbrestart

예시 13: 매월 4일 및 매주 월요일~금요일 11시에 smb를 다시 시작합니다

명령:

0114*mon-wed/etc/init.d/smbrestart

예 14: 10월 1일 4시에 smb를 다시 시작

명령:

041jan*/etc/init.d/smbrestart

예제 15: 매시간 /etc/cron.hourly 디렉터리에 있는 스크립트를 실행

명령:

01****rootrun-parts/etc/cron.hourly

설명:

run-parts는 매개변수입니다. 이 매개변수를 제거하면 디렉터리 이름 대신 실행할 스크립트 이름을 작성할 수 있습니다.

4. 사용상의 주의사항

1. 환경 변수에 주의하세요

때때로 crontab을 생성하는데, 이 작업을 수동으로 수행하기는 어렵지만 이 작업을 자동화하는 데에는 문제가 없습니다. 이러한 상황은 일반적으로 crontab 파일에 환경 변수가 구성되지 않았기 때문에 발생합니다.

crontab 파일에 여러 스케줄링 작업을 정의할 때 가장 주의해야 할 사항은 환경 변수 설정입니다. 작업을 자동으로 실행하면 프로그램이 실제로 환경 변수를 찾을 수 있기 때문입니다. 시스템이 수동으로 작업 예약을 수행하는 경우 환경 변수가 로드되지 않습니다. Linux 운영 체제에 대한 소개에서는 crontab 파일에서 작업 실행에 필요한 모든 환경 변수를 지정해야 합니다. 시스템이 작업 예약을 수행할 때 문제가 없습니다.

크론이 필요한 특별한 상황을 알고 있다고 가정하지 마세요. 그렇지 않은 것 같습니다. 따라서 수동으로 설정한 일부 전역 변수뿐만 아니라 필요한 모든 경로와 환경 변수를 쉘 스크립트에 제공해야 합니다. 따라서 다음 3가지 사항에 주의하세요.

1) 파일 경로가 스크립트에 포함된 경우 전역 경로를 작성하세요.

2) 스크립트 실행에 Java 또는 기타 환경 변수가 필요한 경우 다음과 같은 소스 명령을 통해 환경 변수를 도입하세요.

catstart_cbp.sh

#!/bin/sh

소스/등/프로필

exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh-cmev&

3) 스크립트 자동 실행은 잘 되는데, crontab이 실행되지 않는 경우. 이때 환경변수가 원인이라고 과감하게 의심해야 하며, 문제 해결을 위해 crontab에서 환경변수를 직접 도입해 볼 수도 있습니다. 예:

0****./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh

2. 시스템 사용자의 이메일 로그 삭제에 주의하세요

각 작업 실행이 예약된 후 시스템은 이메일을 통해 현재 시스템 사용자에게 작업 출력 정보를 보냅니다. 시간이 지남에 따라 로그 정보가 매우 커져 시스템의 정상적인 작동에 영향을 미칠 수 있습니다. Linux 운영 및 유지 관리 블로그에서는 모든 작업을 리디렉션하는 것이 매우 중요합니다.

예를 들어 crontab 파일에서 다음 방법을 설정하여 로그 출력을 무시할 수 있습니다.

0*/3***/usr/local/apache2/apachectlrestart>/dev/null2>&1

"/dev/null2>&1"은 먼저 표준 출력을 /dev/null로 리디렉션한 다음 표준 오류를 표준 출력으로 리디렉션한다는 의미입니다. 표준 출력이 이미 /dev/null로 리디렉션되었기 때문입니다. 또한 로그 출력 문제가 해결되도록 /dev/null로 리디렉션됩니다.

3. 시스템 수준 작업 예약 및 사용자 수준 작업 예약

시스템 수준 작업 예약은 주로 시스템의 일부 유지 관리 작업을 완료하고 사용자 수준 작업 예약은 주로 일부 사용자 정의 작업을 완료할 수 있으며(권장되지 않음) 그 반대도 마찬가지입니다. 그러나 그렇지 않습니다. 루트 사용자의 작업 예약 작업은 "crontab-uroot-e"를 통해 설정하거나 예약 작업을 /etc/crontab 파일에 직접 작성할 수 있습니다. 정기적으로 시스템을 다시 시작하는 작업. 루트 사용자 아래에서 정기적으로 시스템을 다시 시작하는 작업을 생성하는 것도 유효하지 않지만 작업은 /etc/crontab 파일에 배치되어야 합니다.

4. 기타 주의사항

새로 생성된 cronjob은 즉시 실행되지 않으며 실행하는 데 최소 2분 정도 소요됩니다. cron을 다시 시작하면 즉시 실행됩니다.

crontab이 갑자기 실패하면 /etc/init.d/crondrestart를 시도하여 문제를 해결할 수 있습니다. 또는 로그를 확인하여 작업이 실행되었는지 확인하거나 tail-f/var/log/cron 오류를 보고하세요.

무작위로 crontab-r을 실행하지 마세요. Crontab 디렉터리(/var/spool/cron)에서 사용자의 Crontab 파일을 삭제합니다. 이 사용자의 모든 crontab을 삭제하면 사라집니다.

%는 crontab에서 줄 바꿈을 의미하는 특별한 의미를 갖습니다. 사용하려면 와일드카드 문자 %를 사용해야 합니다. 예를 들어 일반적으로 사용되는 날짜 '+%Y%m%d'는 crontab에서 실행되지 않으며 날짜 '+%Y%m%로 대체되어야 합니다. 디'.

새 설명: vim 예약 작업 로그 경로인 로그 레코드 vim-f/var/log/cron을 확인하여 예약 작업에 servicecrondstatus가 활성화되어 있는지 확인하세요

위 내용은 Linux에서 작업 스케줄링은 두 가지 유형의 사용자 crontab 서비스로 나뉩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 itcool.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제