DevToolBox무료
블로그

Crontab 치트 시트 2025: 실제로 사용하는 50+ Cron 표현식 예제

12분 읽기by DevToolBox

백업 예약, 배포 자동화, 정기 정리 스크립트 실행 등 cron은 Unix/Linux 시스템의 태스크 스케줄링 핵심입니다. 이 치트시트는 50개 이상의 복사 가능한 cron 표현식 예시를 빈도별로 제공합니다.

1. Cron 표현식 구문

표준 cron 표현식은 공백으로 구분된 5개 필드로 구성됩니다:

┌───────────── 분 (0–59)
│ ┌─────────── 시 (0–23)
│ │ ┌───────── 일 (1–31)
│ │ │ ┌─────── 월 (1–12)
│ │ │ │ ┌───── 요일 (0–7)
│ │ │ │ │
* * * * *  command_to_execute

명령어는 5개 필드 뒤에 옵니다. Cron 생성기 도구로 시각적으로 구성할 수 있습니다.

Cron Generator Tool →

2. 특수 문자

Cron은 4개의 특수 문자를 사용합니다:

문자의미예시설명
*해당 필드의 모든 값과 일치* * * * *Every minute
,목록 지정0 9 * * 1,3,5Mon, Wed, Fri at 9 AM
-범위 정의0 9 * * 1-5Mon through Fri at 9 AM
/단계 간격 정의*/10 * * * *Every 10 minutes

3. 50개 이상의 Cron 표현식 예시

가장 많이 사용되는 cron 스케줄을 담은 표입니다.

X분마다

표현식설명다음 실행 예시
* * * * *Every minute10:00, 10:01, 10:02 ...
*/1 * * * *Every minute (explicit)10:00, 10:01, 10:02 ...
*/2 * * * *Every 2 minutes10:00, 10:02, 10:04 ...
*/5 * * * *Every 5 minutes10:00, 10:05, 10:10 ...
*/10 * * * *Every 10 minutes10:00, 10:10, 10:20 ...
*/15 * * * *Every 15 minutes10:00, 10:15, 10:30, 10:45
*/20 * * * *Every 20 minutes10:00, 10:20, 10:40 ...
*/30 * * * *Every 30 minutes10:00, 10:30, 11:00 ...
0,15,30,45 * * * *At 0, 15, 30, 45 minutes past each hour10:00, 10:15, 10:30, 10:45

매시

표현식설명다음 실행 예시
0 * * * *Every hour (at minute 0)10:00, 11:00, 12:00 ...
30 * * * *Every hour at minute 3010:30, 11:30, 12:30 ...
15 * * * *Every hour at minute 1510:15, 11:15, 12:15 ...
0 */2 * * *Every 2 hours00:00, 02:00, 04:00 ...
0 */3 * * *Every 3 hours00:00, 03:00, 06:00 ...
0 */4 * * *Every 4 hours00:00, 04:00, 08:00 ...
0 */6 * * *Every 6 hours00:00, 06:00, 12:00, 18:00
0 */8 * * *Every 8 hours00:00, 08:00, 16:00
0 */12 * * *Every 12 hours00:00, 12:00

매일

표현식설명다음 실행 예시
0 0 * * *Daily at midnight (00:00)Tomorrow 00:00
0 1 * * *Daily at 1:00 AMTomorrow 01:00
0 6 * * *Daily at 6:00 AMTomorrow 06:00
30 7 * * *Daily at 7:30 AMTomorrow 07:30
0 9 * * *Daily at 9:00 AMTomorrow 09:00
30 8 * * *Daily at 8:30 AMTomorrow 08:30
0 12 * * *Daily at noon (12:00)Tomorrow 12:00
0 15 * * *Daily at 3:00 PMTomorrow 15:00
0 18 * * *Daily at 6:00 PMTomorrow 18:00
0 23 * * *Daily at 11:00 PMTomorrow 23:00
0 8-17 * * *Every hour from 8 AM to 5 PM08:00, 09:00 ... 17:00
0 9,12,18 * * *Three times a day (9 AM, noon, 6 PM)09:00, 12:00, 18:00

매주

표현식설명다음 실행 예시
0 9 * * 1Every Monday at 9:00 AMNext Monday 09:00
0 9 * * 1-5Weekdays (Mon-Fri) at 9:00 AMNext weekday 09:00
0 0 * * 0Every Sunday at midnightNext Sunday 00:00
0 0 * * 6,0Saturday & Sunday at midnightNext Sat/Sun 00:00
0 17 * * 5Every Friday at 5:00 PMNext Friday 17:00
0 9 * * 1,3,5Mon, Wed, Fri at 9:00 AMNext Mon/Wed/Fri 09:00
0 8-17 * * 1-5Hourly 8AM–5PM, weekdays onlyNext weekday 08:00
30 6 * * 1-5Weekdays at 6:30 AMNext weekday 06:30

매월

표현식설명다음 실행 예시
0 0 1 * *1st of every month at midnightNext month, 1st 00:00
0 0 15 * *15th of every month at midnightNext 15th 00:00
0 9 1 * *1st of every month at 9:00 AMNext month, 1st 09:00
0 0 1,15 * *1st and 15th at midnightNext 1st or 15th 00:00
0 0 * * 5LLast Friday of the month (non-std)Last Fri 00:00
0 9 * * 1#1First Monday of the month (non-std)First Mon 09:00
0 0 28 * *28th of every month at midnightNext 28th 00:00

매년/분기별

표현식설명다음 실행 예시
0 0 1 1 *January 1st at midnightJan 1 00:00
0 0 1 1,4,7,10 *Quarterly: Jan, Apr, Jul, Oct 1stNext quarter 00:00
0 0 1 1,7 *Bi-annually: Jan 1 & Jul 1Jan 1 or Jul 1 00:00
0 0 25 12 *December 25th at midnightDec 25 00:00
0 0 1 */3 *Every 3 months on the 1stNext 1st in 3 months
0 0 1 */6 *Every 6 months on the 1stNext 1st in 6 months

비즈니스 & DevOps

표현식설명다음 실행 예시
0 2 * * *Database backup at 2:00 AM dailyTomorrow 02:00
0 3 * * 0Log rotation every Sunday at 3 AMNext Sunday 03:00
0 4 1 * *Monthly DB cleanup on 1st at 4 AMNext month, 1st 04:00
0 1 * * *SSL cert check daily at 1 AMTomorrow 01:00
*/5 * * * *Health check every 5 minutes10:00, 10:05, 10:10 ...
0 5 * * 1-5Deploy window: weekdays at 5 AMNext weekday 05:00
0 0 * * *Rotate logs daily at midnightTomorrow 00:00
0 */4 * * *Send report digest every 4 hours00:00, 04:00, 08:00 ...
0 22 * * 5Friday night maintenance at 10 PMNext Friday 22:00
30 2 * * *Temp file cleanup at 2:30 AM dailyTomorrow 02:30
Cron Expression Parser Tool →

4. Crontab 명령어

crontab 명령어로 사용자별 cron 파일을 관리합니다:

명령어기능
crontab -eEdit your crontab file (opens in default editor)
crontab -lList all cron jobs for the current user
crontab -rRemove all cron jobs for the current user (use with caution!)
crontab -u alice -lList cron jobs for a specific user (requires root)
crontab -u alice -eEdit crontab for a specific user (requires root)
crontab filenameInstall a crontab from a file (overwrites existing)
# Edit crontab
crontab -e

# List all cron jobs
crontab -l

# Backup current crontab to a file
crontab -l > my-crontab-backup.txt

# Install crontab from a file
crontab my-crontab-backup.txt

# Remove all cron jobs (careful!)
crontab -r
Crontab Generator Tool →

5. 플랫폼별 구문

Cron 구문은 플랫폼마다 다릅니다:

Linux crontab

5필드 표준 형식.

# Standard 5-field crontab
*/5 * * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
GitHub Actions

schedule.cron에서 5필드. 항상 UTC.

# .github/workflows/scheduled.yml
on:
  schedule:
    - cron: '0 9 * * 1-5'  # Weekdays 9AM UTC
AWS CloudWatch

6필드. ? 사용.

# AWS EventBridge (6 fields, note the ?)
cron(0 9 ? * MON-FRI *)  # Weekdays 9AM UTC
Kubernetes CronJob

5필드 표준. K8s 1.27+에서 timezone 지원.

# Kubernetes CronJob spec
apiVersion: batch/v1
kind: CronJob
metadata:
  name: daily-backup
spec:
  schedule: "0 2 * * *"
  timeZone: "America/New_York"  # K8s 1.27+
Vercel Cron

vercel.json에서 5필드. UTC.

// vercel.json
{
  "crons": [{
    "path": "/api/cron/daily-report",
    "schedule": "0 9 * * *"
  }]
}

6. 자주 하는 실수

Cron에서 가장 흔한 실수:

1
타임존

Cron은 기본적으로 시스템 타임존. CI/CD는 UTC.

2
실행 겹침

flock 또는 락 파일 사용.

3
서머타임

UTC를 사용하여 문제 회피.

4
일과 요일 동시 설정

둘 다 설정되면 둘 중 하나 일치 시 실행.

5
초 미지원

최소 해상도 1분. 서브미닛에는 sleep 사용.

6
환경 변수

Cron 작업은 최소 환경으로 실행. 전체 경로 사용.

# Gotcha: overlapping runs - use flock to prevent
*/5 * * * * /usr/bin/flock -n /tmp/myjob.lock /path/to/script.sh

# Gotcha: environment - always use full paths
0 2 * * * /usr/bin/python3 /home/user/scripts/backup.py >> /var/log/backup.log 2>&1

# Gotcha: 30-second workaround (two entries)
* * * * * /path/to/script.sh
* * * * * sleep 30 && /path/to/script.sh

# Gotcha: PATH not set - define it at the top of your crontab
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Gotcha: percent signs (%) must be escaped in crontab
# Wrong:
0 0 * * * echo "Today is $(date +%Y-%m-%d)"
# Correct:
0 0 * * * echo "Today is $(date +\%Y-\%m-\%d)"

Sample Crontab File

Here is a complete, real-world crontab file combining several patterns discussed above:

# =============================================
# Crontab for: webserver (production)
# Last updated: 2025-01-15
# =============================================

# Environment
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO="ops-team@example.com"

# --- BACKUPS ---
# Full database backup at 2:00 AM daily
0 2 * * * /usr/bin/flock -n /tmp/db-backup.lock /opt/scripts/db-backup.sh >> /var/log/db-backup.log 2>&1

# Incremental file backup every 6 hours
0 */6 * * * /opt/scripts/file-backup.sh >> /var/log/file-backup.log 2>&1

# --- MAINTENANCE ---
# Clear temp files older than 7 days, daily at 3 AM
0 3 * * * /usr/bin/find /tmp -type f -mtime +7 -delete

# Rotate application logs every Sunday at 4 AM
0 4 * * 0 /opt/scripts/rotate-logs.sh >> /var/log/log-rotation.log 2>&1

# --- MONITORING ---
# Health check every 5 minutes
*/5 * * * * /opt/scripts/healthcheck.sh > /dev/null 2>&1

# SSL certificate expiry check daily at 6 AM
0 6 * * * /opt/scripts/check-ssl.sh

# Disk space alert if usage > 90%, every hour
0 * * * * /opt/scripts/disk-alert.sh

# --- REPORTS ---
# Send daily summary at 8 AM on weekdays
0 8 * * 1-5 /opt/scripts/daily-report.sh

# Monthly analytics report on the 1st at 9 AM
0 9 1 * * /opt/scripts/monthly-report.sh

7. 테스트 및 디버그

프로덕션 배포 전:

1
Cron 파서

Cron 표현식 파서로 다음 실행 시간 확인.

2
Cron 로그

/var/log/syslog 또는 /var/log/cron 확인.

3
출력 리다이렉트

stdout/stderr를 로그 파일로 캡처.

4
짧은 간격으로 테스트

먼저 * * * * *로 테스트.

5
메일 설정

MAILTO=""로 메일 비활성화.

# Redirect all output to a log file
0 2 * * * /path/to/backup.sh >> /var/log/cron-backup.log 2>&1

# Disable cron mail for this job
0 2 * * * /path/to/backup.sh > /dev/null 2>&1

# Set MAILTO at the top of crontab
MAILTO=""
# Or send to a real address
MAILTO="admin@example.com"

# Check cron logs on Debian/Ubuntu
grep CRON /var/log/syslog | tail -20

# Check cron logs on CentOS/RHEL
grep CRON /var/log/cron | tail -20

# On systems using journald (systemd)
journalctl -u cron --since "1 hour ago"

# Quick test: add a job that writes to a file
# Then check if the file gets updated
* * * * * echo "cron works: $(date)" >> /tmp/cron-test.log

# Verify your crontab was saved correctly
crontab -l | grep -v '^#'

# Check if cron daemon is running
systemctl status cron    # Debian/Ubuntu
systemctl status crond   # CentOS/RHEL

Common Cron Debugging Checklist

CheckHow to Verify
Cron daemon running?systemctl status cron (or crond)
Crontab saved?crontab -l and look for your entry
Script executable?chmod +x /path/to/script.sh
Full paths used?Use which python3 to find full path
Output captured?Add >> /tmp/debug.log 2>&1
Permissions correct?Script owner = crontab owner
No syntax errors?bash -n /path/to/script.sh
Timezone correct?timedatectl or date to check

Cron 표현식을 인터랙티브하게 구성하고 테스트하세요:

8. 자주 묻는 질문

Cron 표현식의 형식은?

표준 cron 표현식은 5개 필드: 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-7).

*/5의 의미는?

*/5는 "매 5단위"를 의미. 분 필드에서 5분마다 실행.

30초마다 실행하려면?

표준 cron은 초 미지원. 2개 엔트리를 만들고 하나에 sleep 30 추가.

cron과 crontab의 차이는?

Cron은 데몬. Crontab은 작업 파일.

Windows에서 cron을 쓸 수 있나요?

네이티브 Windows에는 cron이 없습니다. 작업 스케줄러가 대안. WSL에서는 cron 사용 가능.

𝕏 Twitterin LinkedIn
도움이 되었나요?

최신 소식 받기

주간 개발 팁과 새 도구 알림을 받으세요.

스팸 없음. 언제든 구독 해지 가능.

Try These Related Tools

Cron Expression GeneratorCron Expression Parser⏲️Crontab Generator🔍Cron Expression Parser

Related Articles

Cron 표현식 생성기 & 파서: 구문, 예제, 코드 가이드

무료 Cron 표현식 생성기와 파서. Cron 구문을 배우고 Node.js, Python, Bash로 작업을 스케줄링하세요.

Docker Compose YAML 검증: 흔한 10가지 구문 오류 및 수정 방법

Docker Compose YAML 오류로 시간 낭비하지 마세요. 가장 흔한 10가지 구문 오류 식별 및 수정 방법.