본문 바로가기

리눅스

CentOS 7 Anacron 란

반응형

Anacron 란

Anacron은 시스템 작업 스케줄링을 관리하는 도구 중 하나입니다. Anacron은 주기적으로 실행되어 지정된 작업을 예약하고 실행하며, 특히 시스템 부팅 시 놓친 작업을 처리하는 데 사용됩니다. Anacron은 주로 로그 백업, 시스템 정기적인 유지 관리 작업, 데이터베이스 정리, 백업 등과 같은 일상적인 시스템 작업을 관리하는 데 유용합니다.

 

Anacron은 cron이라고 불리는 다른 시스템 작업 스케줄러와 유사하지만, 주요 차이점은 다음과 같습니다.

 

  1. 일정 기간 내에 실행되지 않은 작업 처리: Anacron은 시스템 부팅 시 또는 지정된 시간 간격으로 작업을 실행하므로, 시스템이 꺼져 있거나 놓친 작업이 있더라도 처리할 수 있습니다.
  2. 작업을 사용자별로 관리하지 않음: Anacron은 전역적으로 시스템 작업을 관리하므로 모든 사용자에게 적용됩니다. 그러나 각 작업은 특정 사용자의 작업으로 실행될 수 있습니다.
  3. cron과 비교하여 덜 정교함: Anacron은 작업을 단순한 주기 또는 일정으로 실행하는 데 사용되므로, cron과 비교하면 덜 정교한 작업 스케줄링에 적합합니다.

CentOS 7에서 Anacron 설정은 /etc/anacrontab 파일에 저장됩니다. 이 파일을 수정하여 원하는 작업을 추가하고 구성할 수 있습니다.

 

요약하면, Anacron은 CentOS 7 시스템에서 시스템 작업을 예약하고 주기적으로 실행하는 간단한 도구입니다.

Anacron 패키지 설치

sudo yum install -y cronie-anacron

Anacron 설정 파일 확인

Anacron의 설정 파일은 /etc/anacrontab에 저장됩니다. 이 파일을 편집하여 각 작업을 구성하고 예약할 수 있습니다. 일반적으로 루트 권한이 필요하므로 sudo를 사용하여 편집할 수 있습니다.

cat /etc/anacrontab
$ cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly
728x90

Anacron 작업 추가

Anacron 설정 파일에 작업을 추가하는 형식은 다음과 같습니다.

# 주기적으로 실행할 작업 추가
# 주기  지연  작업명  명령
1       5     example  /usr/bin/command-to-run
  • 주기: 작업을 얼마나 자주 실행할 것인지를 나타냅니다. 예를 들어, 매일 실행하려면 1을 사용하고, 매주 실행하려면 7을 사용합니다.
  • 지연: 작업을 시작하기 전에 대기할 시간(분)을 나타냅니다.
  • 작업명: 작업에 대한 설명으로 임의로 설정할 수 있습니다.
  • 명령: 실행할 명령 또는 스크립트를 지정합니다. 예를 들어, 매일 자정에 /usr/local/bin/daily_backup_script.sh 스크립트를 실행하려면 다음과 같이 설정할 수 있습니다.
1 0 daily_backup /usr/local/bin/daily_backup_script.sh

Anacron 실행

Anacron은 주로 시스템 부팅 시에 실행되며, 설정된 주기에 따라 작업을 실행합니다. 부팅 시 자동으로 실행되므로 추가 구성 없이도 작업이 시작됩니다.

Anacron 로깅

Anacron은 실행된 작업과 관련된 로그를 생성합니다. 이 로그는 일반적으로 /var/spool/anacron/ 디렉터리에 저장됩니다.

 

  • anacron 마지막 작업 실행일 기록 파일(job-identifier)
ls -l /var/spool/anacron/*
$ ls -l /var/spool/anacron/*
-rw-------. 1 root root 9  8월 18 03:50 /var/spool/anacron/cron.daily
-rw-------. 1 root root 9  8월  4 00:49 /var/spool/anacron/cron.monthly
-rw-------. 1 root root 9  8월 18 03:06 /var/spool/anacron/cron.weekly

예제: Anacron을 사용하여 로그 파일 회전

다음은 Anacron을 사용하여 로그 파일을 주기적으로 회전하는 예시입니다. /etc/anacrontab 파일을 열고 다음과 같이 설정합니다.

1       5     rotate_logs  /usr/sbin/logrotate /etc/logrotate.conf

/etc/cron.hourly/0anacron 파일은 CentOS와 같은 많은 Linux 시스템에서 Anacron 작업을 주기적으로 실행하기 위한 스크립트입니다. 이 스크립트는 시간마다 실행되며, Anacron을 통해 예약된 작업이 있는지 확인하고 실행합니다.

cat /etc/cron.hourly/0anacron
$ cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
    day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
    exit 0;
fi



# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
    /usr/bin/on_ac_power >/dev/null 2>&1
    if test $? -eq 1; then
    exit 0
    fi
fi

# 시스템 부팅 시 놓친 작업을 처리하는 Anacron 실행
/usr/sbin/anacron -s

이 스크립트는 시스템 부팅 후 또는 시간별로 실행되며 /usr/sbin/anacron -s 명령을 실행하여 Anacron 작업을 실행합니다. -s 옵션은 Anacron을 시동할 때 무음 모드로 실행하도록 지시합니다. 이렇게 하면 사용자에게 출력되는 메시지가 최소화되어 시스템 로그에만 기록됩니다.

 

즉, /etc/cron.hourly/0anacron 스크립트를 통해 시간마다 Anacron이 실행되어 예약된 작업을 처리하고 놓치지 않도록 합니다. Anacron은 시스템 부팅 후, 시간이 지남에 따라 작업을 실행하며, /etc/anacrontab 파일에 정의된 주기에 따라 작업을 수행합니다.

 

참고URL

- Red Hat Training : 24.2. Anacron을 사용하여 반복된 비동기 작업 예약

 

728x90
반응형