--- title: crontab — 예약 작업 관리 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 정기 작업을 예약하는 crontab의 작성·확인·로그 관리 방법. tags: 프로그램, 자동화 및 예약 작업, crontab --- **💬 "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로 백업해 두고 씁니다. - 서버 시간대를 확인하지 않으면 예상과 다른 시각에 실행됩니다. ## 실제 실행 화면 예약 목록과 백업 실행 로그를 확인한 결과입니다. ![crontab 명령어 실행 결과: 예약 목록과 실행 로그](https://games.cursorai.co.kr/assets/crontab-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/automation/crontab.html