1. 개요
- 리눅스에서 정기적으로 실행되는 작업(백업, 로그 정리, 모니터링 등)은
cron서비스를 통해 자동화할 수 있습니다. - 사용자 크론탭, 시스템 크론탭, cron.hourly 디렉터리 세 가지 방식으로 스크립트를 실행하고 로그로 결과를 확인해 봅니다.
2. 버전
- Rocky Linux 9.5
3. 설명
3-1. cron 주요 명령어
| 명령어 | 설명 |
|---|---|
systemctl status crond | cron 서비스 상태 확인 |
systemctl enable --now crond | cron 서비스 자동시작 및 즉시 실행 |
crontab -e | 현재 사용자 Crontab 편집 |
crontab -l | 현재 사용자 Crontab 목록 확인 |
crontab -r | 현재 사용자 Crontab 삭제 |
run-parts [디렉토리] | cron 디렉토리 내 스크립트를 강제로 실행 |
grep CRON /var/log/cron | cron 로그 확인 |
3-2. cron 설정 형식(Crontab Format)
- 분 시 일 월 요일 명령어
| 필드 | 의미 | 값 범위 | 예시 |
|---|---|---|---|
| 분 (Minute) | 매 시각의 몇 분에 실행할지 | 0–59 | 0 → 정시 |
| 시 (Hour) | 하루 중 몇 시에 실행할지 | 0–23 | 2 → 새벽 2시 |
| 일 (Day) | 매달 며칠에 실행할지 | 1–31 | 15 → 매달 15일 |
| 월 (Month) | 몇 월에 실행할지 | 1–12 | 3 → 3월 |
| 요일 (Day of week) | 요일 지정 | 0–7 (0 또는 7 = 일요일) | 1 → 월요일 |
| 명령어 (Command) | 실행할 스크립트나 명령 | 문자열 | /root/backup.sh |
3-3. 특수 기호 설명
| 기호 | 의미 | 예시 |
|---|---|---|
* | 모든 값(매번) | * * * * * → 매분마다 |
, | 여러 값 지정 | 0,30 * * * * → 매시 0분과 30분 |
- | 범위 지정 | 1-5 * * * * → 매시 1~5분 |
/ | 주기적 간격 | */10 * * * * → 10분 간격 |
@reboot | 부팅 시 1회 실행 | @reboot /root/startup.sh |
3-4. Cron Directory 종류
- 특정 디렉토리 내의 스크립트를 자동 실행하도록 미리 정해진 경로를 제공합니다.
| 디렉토리 | 실행 주기 | 설명 |
|---|---|---|
/etc/cron.hourly/ | 1시간마다 | 매시간 실행되는 스크립트 |
/etc/cron.daily/ | 1일 1회 | 매일 새벽(기본 4시) 실행 |
/etc/cron.weekly/ | 1주 1회 | 주 1회(보통 일요일) 실행 |
/etc/cron.monthly/ | 1달 1회 | 매달 1일 실행 |
/etc/cron.d/ | 자유 형식 | 시스템 서비스용 cron 정의 (일반 사용자용 아님) |
3-5. Cron 로그 및 확인 명령어
| 명령어 | 설명 |
|---|---|
grep CRON /var/log/cron | cron 실행 로그 확인 |
journalctl -u crond | systemd 로그 확인 |
tail -f /var/log/cron | 실시간 로그 모니터링 |
3-6. Cron 관련 주요 파일 위치
| 파일 경로 | 설명 |
|---|---|
/etc/crontab | 시스템 전체에 적용되는 기본 cron 설정 |
/var/spool/cron/ | 사용자별 crontab 파일 저장 위치 |
/etc/cron.d/ | 패키지나 서비스별 cron 설정 저장 |
/etc/anacrontab | anacron 주기 설정 파일 |
/etc/cron.allow, /etc/cron.deny | cron 실행 권한 제어 파일 |
4. 테스트 스크립트
4-1. 테스트 스크립트 생성
# vim /root/cron_script.sh
설정 예시:
date "+%Y-%m-%d %H:%M:%S %Z"
4-2. 실행 권한 부여
# chmod +x /root/cron_script.sh
5. 사용자 Crontab
5-1. 설정
# crontab -e
설정 예시:
* * * * * /root/cron_script.sh >> /root/user_crontab.log 2>&1
5-2. 설정 확인
# crontab -l
출력 예시:
* * * * * /root/cron_script.sh >> /root/user_crontab.log 2>&1
5-3. 로그 확인
# cat /root/user_crontab.log
출력 예시:
2025-10-06 15:51:01 KST
6. 시스템 Crontab
6-1. 설정
# vim /etc/crontab
설정 예시:
* * * * * root /root/cron_script.sh >> /root/system_crontab.log 2>&1
6-2. 로그 확인
# cat /root/system_crontab.log
출력 예시:
2025-10-06 15:52:01 KST
7. Directory Crontab
7-1. 스크립트 작성
# vim /etc/cron.hourly/cron_script
설정 예시:
date "+%Y-%m-%d %H:%M:%S %Z" >> /root/cron_hourly.log 2>&1
7-2. 실행 권한 부여
# chmod 755 /etc/cron.hourly/cron_script
7-3. 강제 실행(테스트용)
# run-parts /etc/cron.hourly/
7-4. 로그 확인
# cat /root/cron_hourly.log
출력 예시:
2025-10-06 15:52:32 KST