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