crontab — 예약 작업 관리

Linux / 자동화 및 예약 작업 / crontab.html

자동화 및 예약 작업원문등록 2026-10-18

💬 "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 명령어 실행 결과: 예약 목록과 실행 로그

실제 운영 중인 서버

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