IT 기술 문서


2025.02.01 17:01

CentOS 7 유용한 명령어 시리즈 - ⑧ 크론 작업(스케줄링) 관리

  • it33 오래 전 2025.02.01 17:01
  • 39
    0

alt text


CentOS 7에서는 특정 작업을 일정한 시간 간격으로 실행하기 위해 **크론(cron)**을 사용할 수 있습니다. 이 글에서는 크론 작업(스케줄링)을 설정하고 관리하는 방법을 정리하겠습니다.


크론(cron) 개요

  • cron은 특정 시간마다 자동으로 명령을 실행하는 스케줄러입니다.

  • 사용자는 개별적으로 crontab(크론탭)을 설정하여 원하는 작업을 예약할 수 있습니다.


1. 크론 작업 관리 기본 명령어

1.1. 크론 작업 목록 확인

crontab -l
  • 현재 사용자(root 포함)의 등록된 크론 작업을 출력합니다.

1.2. 크론 작업 추가 및 수정

crontab -e
  • 현재 사용자 계정의 크론 작업을 편집할 수 있습니다.

  • 기본 편집기는 vi 또는 nano가 사용됩니다.

1.3. 특정 사용자 크론 작업 확인

crontab -u username -l
  • 특정 사용자의 크론 작업을 조회합니다.

1.4. 크론 작업 삭제

crontab -r
  • 현재 사용자의 모든 크론 작업을 삭제합니다.

1.5. 특정 사용자 크론 작업 삭제

crontab -u username -r
  • 특정 사용자의 크론 작업을 삭제합니다.


2. 크론 스케줄 설정 형식

2.1. 크론 스케줄 형식

크론탭을 설정할 때는 다음과 같은 형식을 사용합니다.

* * * * * command
분 시 일 월 요일 실행할_명령어

각 필드는 다음을 의미합니다:

필드

설명

값의 범위

몇 분에 실행할지 설정

0-59

몇 시에 실행할지 설정

0-23

몇 일에 실행할지 설정

1-31

몇 월에 실행할지 설정

1-12

요일

요일 지정 (0=일요일, 6=토요일)

0-6


3. 크론 예제 설정

3.1. 매일 특정 시간에 실행

0 3 * * * /path/to/script.sh
  • 매일 새벽 3시 0분/path/to/script.sh 실행

3.2. 매주 월요일 6시에 실행

0 6 * * 1 /path/to/backup.sh
  • 매주 월요일 오전 6시에 백업 스크립트 실행

3.3. 매월 1일 자정에 실행

0 0 1 * * /path/to/monthly_report.sh
  • 매월 1일 00:00에 리포트 생성

3.4. 매시간마다 실행

0 * * * * /path/to/hourly_task.sh
  • 매 정시(00, 01, 02...)에 실행

3.5. 매 10분마다 실행

*/10 * * * * /path/to/check_status.sh
  • 10분마다 상태 체크 스크립트 실행

3.6. 매 5분마다 특정 사용자로 실행

*/5 * * * * username /path/to/task.sh
  • 5분마다 특정 사용자의 권한으로 실행

3.7. 특정 시간 범위 내 실행

0 9-17 * * * /path/to/work_hours_script.sh
  • 매일 오전 9시부터 오후 5시까지 매 정시에 실행

3.8. 주말(토,일)마다 실행

0 8 * * 6,0 /path/to/weekend_task.sh
  • 토요일과 일요일 오전 8시에 실행


4. 크론 로그 및 디버깅

4.1. 크론 실행 로그 확인

cat /var/log/cron
  • 크론이 정상적으로 실행되었는지 확인

4.2. 크론 실행 테스트

echo "hello" >> /tmp/test_cron.log
  • 크론에 echo 명령을 추가하고 로그가 남는지 확인

4.3. 크론 실행 결과 이메일 알림

MAILTO="admin@example.com"
  • 크론 실행 결과를 이메일로 받도록 설정

4.4. 크론 실행 시 오류 로그 남기기

0 2 * * * /path/to/script.sh >> /var/log/script.log 2>&1
  • 크론 실행 결과를 /var/log/script.log 파일에 저장


5. 시스템 크론 설정 (/etc/crontab & /etc/cron.d/)

시스템 전체에서 관리되는 크론 작업은 /etc/crontab 또는 /etc/cron.d/에서 관리됩니다.

5.1. /etc/crontab 직접 편집

nano /etc/crontab

예제:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 분 시 일 월 요일 사용자 실행명령어
0 1 * * * root /usr/bin/backup.sh
  • 매일 새벽 1시root 사용자로 백업 스크립트 실행

5.2. /etc/cron.daily, /etc/cron.weekly, /etc/cron.hourly 활용

  • /etc/cron.daily/ → 하루에 한 번 실행

  • /etc/cron.weekly/ → 일주일에 한 번 실행

  • /etc/cron.hourly/ → 매시간 실행

cp /path/to/script.sh /etc/cron.daily/
chmod +x /etc/cron.daily/script.sh
  • script.sh/etc/cron.daily/에 추가하면 매일 실행됨


6. 크론 서비스 관리

크론 서비스가 정상적으로 실행되고 있는지 확인하려면 crond 서비스 상태를 확인해야 합니다.

6.1. 크론 서비스 상태 확인

systemctl status crond
  • active (running) 상태이면 정상 작동 중

6.2. 크론 서비스 시작

systemctl start crond
  • crond 서비스를 시작

6.3. 크론 서비스 중지

systemctl stop crond
  • crond 서비스를 중지

6.4. 크론 서비스 재시작

systemctl restart crond
  • 크론 서비스 재시작

6.5. 크론 서비스 자동 실행 설정

systemctl enable crond
  • 시스템 부팅 시 crond가 자동으로 실행되도록 설정


정리

명령어

설명

crontab -l

현재 사용자의 크론 작업 확인

crontab -e

크론 작업 추가 및 수정

crontab -r

현재 사용자의 모든 크론 작업 삭제

journalctl -u crond --no-pager

크론 서비스의 로그 확인

cat /var/log/cron

크론 실행 로그 확인

systemctl restart crond

크론 서비스 재시작

systemctl enable crond

크론 서비스 자동 실행 설정

이번에는 CentOS 7에서 크론 작업(스케줄링)을 설정하는 방법을 정리했습니다. 다음 시리즈에서는 SELinux 관리 명령어를 다루겠습니다.

  • 공유링크 복사