Linux in Action: 작업 스케줄링을 위한 Crontab 마스터링 (RHCSA & DevOps)
Source: Dev.to
소개
작업 자동화는 모든 Linux 시스템 관리자의 핵심 책임입니다. 야간 백업, 로그 순환, 보고서 생성, DevOps 워크플로 트리거 등 어떤 작업이든 cron 스케줄러를 사용하면 반복 작업을 신뢰성 있게 실행할 수 있습니다.
이 문서는 crontab 사용에 대한 RHCSA‑맞춤형 완전 가이드를 제공하며, 실제 비즈니스 사례와 바로 적용 가능한 실용 예제를 포함합니다.
Cron과 Crontab이란?
cron은 특정 간격에 명령어나 스크립트를 실행하도록 설계된 Linux 내장 스케줄러입니다. 예약 작업을 정의하는 설정 파일을 crontab이라고 합니다.
Cron은 다음에 이상적입니다:
- 자동 시스템 유지보수
- 백업 및 정리 작업
- 로그 순환 및 보고
- 정기적인 데이터 전송
- 컴플라이언스 작업 및 모니터링
Cron은 인간 개입 없이 반복 작업을 자동화해 일관성과 신뢰성을 높입니다.
Cron 구문 설명
각 cron 항목은 다섯 개의 시간 필드와 명령어로 구성됩니다:
MIN HOUR DOM MON DOW CMD
중요: 편집기에서는 필드를 TAB으로 구분해야 하며, 스페이스바로 구분하면 안 됩니다.
필드 의미
| 필드 | 설명 | 범위 |
|---|---|---|
| MIN | 분 | 0–59 |
| HOUR | 시 | 0–23 |
| DOM | 월의 일 | 1–31 |
| MON | 월 | 1–12 |
| DOW | 요일 | 0–6 (Sun=0, Mon=1 … Sat=6) |
| CMD | 실행할 명령 | — |
Cron 서비스 관리
Cron 서비스가 실행 중인지 확인:
systemctl status crond
부팅 시 Cron 서비스 활성화:
systemctl enable crond
Cron 서비스 재시작:
systemctl restart crond
사용자 Crontab 및 작업 스케줄링
각 사용자는 자신만의 crontab을 가질 수 있습니다.
특정 사용자로 crontab 편집
crontab -e -u username
예시: natasha 사용자에게 6월 15일 14시 23분에 메시지를 출력하도록 작업 스케줄링
su natasha
crontab -e
편집기 안에 다음을 추가:
23 14 15 06 * /usr/bin/echo hello
ESC 키를 누른 뒤 :wq 로 저장합니다.
확인:
crontab -l -u natasha
Cron 표현식 예시
-
매분
* * * * * /usr/bin/echo "Running every minute" -
5분마다
*/5 * * * * /usr/bin/date >> /tmp/every5min.log -
첫 10분 동안 2분 간격
0-10/2 * * * * /usr/bin/echo "Running every 2 mins for first 10 mins" -
하루에 두 번 1:00 AM 및 11:00 AM
0 1,11 * * * /usr/bin/echo "Twice a day task" -
주중만, 오전 9시–오후 6시 사이
0 9-18 * * 1-5 /usr/bin/echo "Weekday work hours task"
특수 Cron 키워드
일부 스케줄은 다섯 개 필드가 필요하지 않습니다. Cron은 편리한 단축키를 제공합니다:
| 키워드 | 동등 일정 |
|---|---|
@yearly / @annually | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@daily / @midnight | 0 0 * * * |
@hourly | 0 * * * * |
@weekly | 0 0 * * 0 |
@reboot | 시스템 부팅 후 한 번 실행 |
예시: 매년 1월 1일 00:00에 새해 시스템 상태 보고서를 전송하는 스크립트 실행
@yearly /usr/bin/echo "Happy New Year! System status report triggered." >> /var/log/newyear.log
여러 작업 동시에 실행하기
같은 사용자의 crontab에 여러 줄을 추가해 여러 작업을 스케줄링할 수 있습니다:
# 매일 14:23에 작업 실행
23 14 * * * /usr/bin/echo hello
# 5분마다 작업 실행
*/5 * * * * /usr/bin/date >> /home/natasha/data.log
# 매주 일요일 자정에 작업 실행
0 0 * * 0 /usr/bin/echo hiyaa
실제 비즈니스 사례
시나리오: 소매 기업의 자동 보고 및 컴플라이언스
소매 조직은 일일 매출, 재고 스냅샷, 오류 로그를 자동으로 분석팀에 전달해야 합니다.
crontab 활용 예시:
- 야간 재고 내보내기 작업을 23:59에 실행
- 컴플라이언스 로그 보관을 6시간마다 실행
- 백업 스크립트를 매일 02:00에 실행
59 23 * * * /usr/local/bin/export_inventory.sh
0 */6 * * * /usr/local/bin/archive_logs.sh
0 2 * * * /usr/local/bin/db_backup.sh
비즈니스 효과
- IT 및 운영팀의 수작업 감소
- 컴플라이언스 보고서가 항상 제때 생성됨 보장
- 자동 백업을 통한 데이터 손실 방지
- 인간 오류 제거로 정확도 향상
Cron 작업은 기업의 자동화 기반이 되어 DevOps 워크플로, 감사, 운영 신뢰성을 지원합니다.
결론
Crontab은 Linux에서 가장 강력한 자동화 도구 중 하나입니다. cron 구문, 서비스 관리, 스케줄 패턴, 실제 사례에 대한 확실한 이해를 바탕으로 거의 모든 반복 작업을 자동화할 수 있습니다.
이 예제들을 직접 연습하고, 자신만의 자동화 루틴을 구축해 RHCSA 시험 준비와 DevOps 프로젝트에 cron을 적극 활용해 보세요.