24장. 시스템 작업 자동화
작업이라고도 하는 작업을 자동으로 실행하도록 Red Hat Enterprise Linux를 구성할 수 있습니다.
- cron 을 사용하여 지정된 시간에 정기적으로 참조하십시오. 24.1절. “Cron을 사용하여 반복 작업 예약”
- anacron 을 사용하는 특정 날짜에 비동기적으로 참조 24.2절. “Anacron을 사용하여 반복된 비동기 작업 예약”
- at 를 사용하여 특정 시간에 한 번 참조하십시오. 24.3절. “at를 사용하여 특정 시간에 실행되도록 작업 예약”
- 배치를 사용하여 시스템 부하 평균이 지정된 값으로 떨어지면 다음을 참조하십시오. 24.4절. “일괄 처리를 사용하여 시스템 로드 드롭다운에서 실행할 작업 예약”
- 다음 부팅 시 다음을 참조하십시오. 24.5절. “systemd 장치 파일을 사용하여 Next Boot에서 실행되도록 작업 예약”
이 장에서는 이러한 작업을 수행하는 방법을 설명합니다.
24.1. Cron을 사용하여 반복 작업 예약
cron
은 작업(일반적으로 작업이라고 함)을 예약할 수 있는 서비스입니다. cron
작업은 시스템이 예약된 시간에 실행되는 경우에만 실행됩니다. 시스템이 부팅될 때 실행을 연기할 수 있는 작업을 예약하려면 시스템이 실행 중이 아닌 경우 작업이 "lost"가 아닌 경우 24.3절. “at를 사용하여 특정 시간에 실행되도록 작업 예약” 을 참조하십시오.
사용자는 crontab
파일이라고도 하는 cron 테이블 파일에 cron 작업을 지정합니다. 그런 다음 이러한 파일은 작업을 실행하는 crond
서비스에서 읽습니다.
24.1.1. Cron 작업 사전 요구 사항
cron
작업을 예약하기 전에 다음을 수행합니다.
cronie 패키지를 설치합니다.
~]# yum install cronie
crond
서비스가 활성화되어 있습니다. - 설치 시 부팅 시 자동으로 시작됩니다. 서비스를 비활성화한 경우 다음을 활성화합니다.~]# systemctl enable crond.service
현재 세션에 대해
crond
서비스를 시작합니다.~]# systemctl start crond.service
(선택 사항) cron 을 구성합니다. 예를 들어 다음과 같이 변경할 수 있습니다.
- 작업 실행 시 사용할 쉘
-
PATH
환경 변수 이메일 주소: 작업이 이메일을 보내는 경우.
cron
구성에 대한 자세한 내용은 crontab(5) 도움말 페이지를 참조하십시오.
24.1.2. Cron 작업 예약
작업을 root 사용자로 예약
루트
사용자는 /etc/crontab
의 cron 테이블을 사용하거나, 바람직하게는 /etc/cron.d/
에 cron 테이블 파일을 생성합니다. 작업을 root
로 예약하려면 다음 절차를 사용하십시오.
선택 사항:
-
작업을 실행할 시간(분)입니다. 예를 들어,
0,10,20,30,40,50
또는0/10을 사용하여 시간 10분마다 지정합니다.
-
작업을 실행할 하루 중 시간(일)입니다. 예를 들어
17-20
을 사용하여 17:00에서 20:59로 시간을 지정합니다. -
작업을 실행할 월의 일 수입니다. 예를 들어
15
를 사용하여 한 달의 15일을 지정합니다. -
작업을 실행할 1년 중 1개월은 어떻게 됩니까. 예를 들어
Jun,Jul,Aug
또는6,7,8
을 사용하여 해당 연도의 여름 개월을 지정합니다. 작업을 실행할 요일입니다. 예를 들어 작업에
*
를 사용하여 요일과 독립적으로 실행합니다.선택한 값을 시간 사양에 결합합니다. 위의 예제 값의 결과는 이 사양입니다.
0,10,20,30,50 17-20 15 Jun,Jul, Aug *
-
작업을 실행할 시간(분)입니다. 예를 들어,
-
사용자를 지정합니다. 작업은 이 사용자가 실행하는 것처럼 실행됩니다. 예를 들어
루트
를 사용합니다. -
실행할 명령을 지정합니다. 예를 들어
/usr/local/bin/my-script.sh
를 사용하십시오. 위의 사양을 한 줄로 설정합니다.
0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * root /usr/local/bin/my-script.sh
-
결과 행을
/etc/crontab
에 추가하거나 바람직하게는/etc/cron.d/
에 cron 테이블 파일을 만들고 여기에 행을 추가합니다.
이제 작업이 예약된 대로 실행됩니다.
작업을 지정하는 방법에 대한 전체 참조는 crontab(5) 매뉴얼 페이지를 참조하십시오. 기본 정보는 /etc/crontab
파일의 시작을 참조하십시오.
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # 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
작업이 non-root 사용자로 예약
루트가 아닌 사용자는 crontab 유틸리티를 사용하여 cron 작업을 구성할 수 있습니다. 해당 사용자가 실행한 것처럼 작업이 실행됩니다.
특정 사용자로 cron 작업을 생성하려면 다음을 수행합니다.
사용자 쉘에서 다음을 실행합니다.
[bob@localhost ~]$
crontab -e
그러면
VISUAL
또는EDITOR
환경 변수에서 지정한 편집기를 사용하여 사용자 고유의crontab
파일을 편집하기 시작합니다.“작업을 root 사용자로 예약” 과 동일한 방식으로 작업을 지정하고 사용자 이름으로 필드를 남겨 둡니다. 예를 들어, 추가하는 대신
0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * bob /home/bob/bin/script.sh
추가:
0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * /home/bob/bin/script.sh
- 파일을 저장하고 편집기를 종료합니다.
(선택 사항) 새 작업을 확인하려면 다음을 실행하여 현재 사용자의 crontab 파일의 내용을 나열합니다.
[bob@localhost ~]$
crontab -l
@daily /home/bob/bin/script.sh
일정 시간(Hourly, day, Weekly, Monthly)
hourly, daily, weekly 또는 monthly 작업을 예약하려면 다음을 수행합니다.
- 작업을 실행할 작업을 쉘 스크립트에 배치합니다.
쉘 스크립트를 다음 디렉터리 중 하나에 배치합니다.
-
/etc/cron.hourly/
-
/etc/cron.daily/
-
/etc/cron.weekly/
-
/etc/cron.monthly/
-
이제 스크립트가 실행됩니다. crond
서비스는 /etc/cron.hourly
,/etc/cron.daily
,/etc/cron.weekly
, /etc/cron.monthly
디렉터리에 있는 모든 스크립트를 자동으로 실행합니다.