crontab — 예약 작업 관리
Linux / 자동화 및 예약 작업 / crontab.html
💬 "crontab 명령어"
crontab은 정해진 시각에 작업을 실행합니다. 백업·정리·배치의 기본 도구입니다.
가장 흔한 문제는 환경변수(PATH)와 출력 리다이렉션입니다.
- 개념: 분·시·일·월·요일 순서로 실행 일정을 지정합니다.
- 다섯 필드:
* * * * *순서로 시각을 지정합니다. - 명령: 필드 뒤에 실행할 명령을 씁니다.
- 출력: > 로그파일 2>&1 을 붙이는 것이 안전합니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-l | 현재 예약 목록 확인 |
-e | 예약 편집(편집기 사용) |
-r | 전체 삭제(위험) |
MAILTO= | 메일 발송을 끄거나 지정합니다 |
필수 명령어 조합 3가지
crontab -l— 현재 예약 확인0 3 * * * /opt/app/bin/backup.sh > /var/log/app/backup.log 2>&1— 매일 03:00 백업*/5 * * * * /opt/app/bin/health.sh >/dev/null 2>&1— 5분마다 헬스체크
💬 "장애 대응할 때 이걸 어떻게 쓰면 좋을까?"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 예약 확인
기존 작업과 중복이 없는지 봅니다.
crontab -l
2단계 · 등록
로그를 남기도록 등록합니다.
crontab -e # 0 3 * * * /opt/app/bin/backup.sh > /var/log/app/backup.log 2>&1
3단계 · 검증
로그와 실행 이력을 확인합니다.
tail -n 20 /var/log/app/backup.log && grep CRON /var/log/syslog | tail -5
실무에서는 이렇게 씁니다
1. 야간 백업
상황 — 매일 새벽 DB 덤프를 백업해야 합니다.
0 3 * * * /usr/local/bin/db-dump.sh > /var/log/app/dump.log 2>&1
결과 — 매일 03:00에 덤프가 실행되고 로그가 남습니다.
포인트 — 스크립트는 절대 경로로 쓰고, PATH를 스크립트 안에서 설정합니다.
2. 임시 파일 정리
상황 — 캐시 디렉터리를 주기적으로 비워야 합니다.
30 4 * * * find /var/cache/app -type f -mtime +7 -delete > /dev/null 2>&1
결과 — 7일 지난 캐시 파일이 매일 정리됩니다.
포인트 — 삭제 작업은 대상 경로를 좁히고 로그를 남겨 검증합니다.
주의할 점
- cron 환경은 로그인 셸과 달라 PATH/환경변수가 비어 있습니다. 절대 경로를 씁니다.
- 출력 리다이렉션을 안 하면 메일이 쌓이거나 로그가 유실됩니다.
- crontab -r은 예약 전체를 삭제합니다. -l로 백업해 두고 씁니다.
- 서버 시간대를 확인하지 않으면 예상과 다른 시각에 실행됩니다.
실제 실행 화면
예약 목록과 백업 실행 로그를 확인한 결과입니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.