운영중입니다

Crontab을 통한 자동 실행 설정 가이드 본문

리눅스

Crontab을 통한 자동 실행 설정 가이드

https443 2025. 8. 11. 19:26

✅ 1. crontab 이란?

crontab은 리눅스/유닉스 시스템에서 주기적으로 작업(명령어나 스크립트)을 실행하기 위한 시간 기반의 작업 스케줄러를 뜻함.
cron daemon이 crontab 파일을 읽고, 지정된 시간에 맞춰 해당 작업을 자동으로 실행.

주요 특징

  • 시간 단위로 반복 작업 자동화
  • 사용자별 스케줄 관리 가능
  • 시스템 전체의 작업 예약도 가능

✅  2. crontab 설치 및 서비스 활성화 방법

* 리눅스 배포판이나 버전에 따라 관리 방식이 조금씩 차이가 있음.

2.1 CentOS 5

# crontab 설치
yum install crontabs -y

# 서비스 등록 및 시작
chkconfig crond on
service crond start

#현재 상태 확인
service crond status

# 서비스 등록 확인
chkconfig --list | grep crond

2.2 CentOS 7

# crontab 설치
yum install cronie -y

# 서비스 등록 및 시작
systemctl enable crond
systemctl start crond

# 현재 상태 확인
systemctl status crond

# 서비스 등록 확인
systemctl list-unit-files | grep crond

     * CentOS 7부터는 systemd 기반으로 서비스 관리 도구가 바뀌었기 때문에 systemctl을 사용. 
2.3 Ubuntu

# crontab 설치
sudo apt install cron -y

# 서비스 등록 및 시작
sudo systemctl start cron     # 즉시 시작
sudo systemctl enable cron    # 부팅 시 자동 시작

# 현재 상태 확인
sudo systemctl status cron   

# 부팅시 시작 등록 확인
systemctl is-enabled cron
systemctl list-unit-files | grep cron

✅  3. crontab 설정 방법

crontab 설정에는 사용자 개인 crontab 파일과 시스템 전체 설정 파일인 /etc/crontab 두 가지 방식이 있음.

   3.1 /etc/crontab과 crontab -e의 차이점

항목 /etc/crontab crontab -e
적용 대상 시스템 전체 특정 사용자
형식 시간 + 사용자 + 명령어 시간 + 명령어
위치 /etc/crontab /var/spool/cron/사용자명
권한 루트 권한 필요 일반 사용자도 사용 가능
 

예를 들어 /etc/crontab 파일은 다음과 같은 형식을 사용.

# 분 시 일 월 요일 사용자 실행명령어

#ex) 00 04 * * * root /root/scipt_ex.sh > /dev/null 2>&1
 

반면, crontab -e는 사용자 지정이 없고 아래처럼 작성.

# 분 시 일 월 요일 실행명령어

# ex) 00 04 * * * /root/scipt_ex.sh > /dev/null 2>&1

 


3.2 /etc/crontab을 사용한 명령어 설정 예시

 
# 매일 새벽 3시에 시간 동기화 수행

0 3 * * * root rdate -s time.bora.net > /dev/null 2>&1

# 0 3 * * * : 매일 03시 00분
# root : 실행할 사용자
# rdate -s time.bora.net : 실행할 명령
# > /dev/null 2>&1 : 로그/에러 메시지 무시

3.3 /etc/crontab에서 스크립트 실행 예시

#ex) 백업 스크립트 /usr/local/bin/script_ex.sh를 매일 새벽 2시에 실행

0 2 * * * root /usr/local/bin/script_ex.sh >> /var/log/backup.log 2>&1

# >> /var/log/backup.log : 출력 로그 저장
# 2>&1 : 오류 로그도 같은 파일로 저장

✅  4. crontab -e 명령어를 이용한 사용자 스케줄 설정

crontab -e

 

#ex) /usr/local/bin/script_ex.sh 스크립트를 10분마다 실행

*/10 * * * * /usr/local/bin/script_ex.sh
 
#작업을 확인하려면:

crontab -l


#작업을 삭제하려면:

crontab -r
 

 


✅  5. 주의사항 및 팁

5.1 환경 변수 주의

#crontab은 기본 환경이 제한적이기 때문에, 스크립트 내에 명시적으로 환경 변수를 지정하거나 
#source /etc/profile 등을 사용하는 것을 권장

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

5.2 로그 확인

# 작업 실행 여부 확인은 다음 로그 파일에서 확인 가능

/var/log/cron

# 실시간으로 확인시 아래 명령어 사용

tail -f /var/log/cron