본문 바로가기
Infra2026년 6월 20일2분 읽기

cron과 systemd timer, 정기 작업엔 무엇을

YS
김영삼
조회 351
cron과 systemd timer, 정기 작업엔 무엇을

핵심 요약

간단한 주기 작업은 cron으로 충분하지만, 로그·실패 추적·부팅 후 누락 보정·의존성 제어가 필요하면 systemd timer가 낫다. timer는 작업을 service 유닛으로 실행해 journald에 로그가 남고, 누락 시 보정(Persistent)·랜덤 지연 같은 기능을 제공한다.

1. 비교

cronsystemd timer
설정 난이도쉬움유닛 2개
로그약함(메일/직접)journalctl 통합
누락 보정없음Persistent=true

2. timer 예

# backup.timer
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true     # 꺼져 있던 사이 놓친 실행 보정
[Install]
WantedBy=timers.target
# backup.service 가 실제 작업

3. 함정

  • cron은 환경변수·PATH가 로그인 셸과 달라 "로컬에선 되는데 cron에선 실패" 흔함 — 절대경로·env 명시
  • timer는 service 유닛 이름이 같아야 연결됨
  • 실행 결과 확인: systemctl list-timers, journalctl -u backup

자주 묻는 질문

cron 작업이 수동 실행은 되는데 자동에선 실패해요.

cron은 최소한의 환경에서 실행돼 PATH·환경변수가 다릅니다. 명령을 절대경로로 쓰고 필요한 env를 스크립트에서 명시하세요.

서버가 꺼져 있던 시간의 작업은 어떻게 되나요?

cron은 그냥 건너뜁니다. systemd timer는 Persistent=true면 부팅 후 놓친 실행을 한 번 보정합니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록