Part 2: Hands-On Guide
2.7 자동화 실행
기본 원리
claude -p "{prompt}" -- 대화형 인터페이스 없이 실행합니다.
무인 실행 옵션
-
--dangerously-skip-permissions: 모든 권한 건너뛰기 (위험, CI/CD나 격리된 환경 권장) -
--permission-mode acceptEdits: 편집만 자동 승인 (더 안전)
caffeinate 사용법
일회성 작업에는 caffeinate를 사용합니다 (클램쉘 모드가 아닐 경우 덮개는 연 채로).
1
Step 1 / 3
caffeinate로 Claude Code 실행
bash
caffeinate -ims claude -p "내 프로젝트 전체 구조 분석해줘" --permission-mode acceptEdits | 플래그 | 설명 |
|---|---|
-i | 사용자 입력 없을 때(idle) 잠자기 방지 |
-s | 디스플레이 꺼져도 시스템 sleep 방지 |
-m | 디스크 sleep 방지 |
-d | 디스플레이 sleep 방지 (굳이??) |
-i 설명: 사용자 입력 없을 때(idle) 잠자기 방지
-s 설명: 디스플레이 꺼져도 시스템 sleep 방지
-m 설명: 디스크 sleep 방지
-d 설명: 디스플레이 sleep 방지 (굳이??)
반복 및 예약 작업
Claude Code 자체에는 스케줄 기능이 없습니다 (2026년 1월 기준). 외부 스케줄러가 필요합니다.
⚠️ 잠자기 방지 모드 설정
도구 선택 전 잠자기 방지 모드를 실행하세요.
Mac: 시스템 설정 메뉴에서 Power Nap 또는 잠자기 모드 검색 후 Waker for network access 또는 네트워크 접근을 위해 깨우기 On
외부 스케줄러: cron vs. macOS launchd
| 특징 | cron | launchd |
|---|---|---|
| 기원 | Unix/Linux 전통 | Apple 독자 개발 (macOS 전용) |
| 문법 | 간단 (* * * * *) | 복잡 (XML plist) |
| 환경변수 | 제한적 (수동 로딩 필요) | 완전 지원 |
| 잠자기 후 실행 | 건너뜀 | 깨어난 후 실행 |
| 실패 시 재시도 | 없음 | 있음 |
| 로그 관리 | 수동 | 자동 (system.log) |
| 권한 관리 | 단순 | 세밀함 |
| 배터리 인식 | 없음 | 있음 |
| 네트워크 인식 | 없음 | 있음 |
| 선택 가이드 (cron) | 간단한 스케줄만 필요 Mac이 항상 켜져 있음 빠르게 설정하고 싶음 Linux/Unix 경험이 있음 | |
| 선택 가이드 (launchd) | 조건부 실행 필요 (배터리, 네트워크) 잠자기 후 작업 실행 필요 자동 재시도 필요 프로덕션 수준 안정성 복잡한 스케줄 (여러 시간대) |
기원
cron: Unix/Linux 전통
launchd: Apple 독자 개발 (macOS 전용)
문법
cron: 간단 (
* * * * *) launchd: 복잡 (XML plist)
환경변수
cron: 제한적 (수동 로딩 필요)
launchd: 완전 지원
잠자기 후 실행
cron: 건너뜀
launchd: 깨어난 후 실행
실패 시 재시도
cron: 없음
launchd: 있음
로그 관리
cron: 수동
launchd: 자동 (system.log)
권한 관리
cron: 단순
launchd: 세밀함
배터리 인식
cron: 없음
launchd: 있음
네트워크 인식
cron: 없음
launchd: 있음
선택 가이드 (cron)
cron: 간단한 스케줄만 필요
Mac이 항상 켜져 있음
빠르게 설정하고 싶음
Linux/Unix 경험이 있음
Mac이 항상 켜져 있음
빠르게 설정하고 싶음
Linux/Unix 경험이 있음
launchd:
선택 가이드 (launchd)
cron:
launchd: 조건부 실행 필요 (배터리, 네트워크)
잠자기 후 작업 실행 필요
자동 재시도 필요
프로덕션 수준 안정성
복잡한 스케줄 (여러 시간대)
잠자기 후 작업 실행 필요
자동 재시도 필요
프로덕션 수준 안정성
복잡한 스케줄 (여러 시간대)
2
Step 2 / 3
cron 스케줄 설정
crontab
# crontab 편집
crontab -e
# 기본 형식: 분 시 일 월 요일 명령
# * * * * * command
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ └─ 요일 (0-7, 0과 7은 일요일)
# │ │ │ └─── 월 (1-12)
# │ │ └───── 일 (1-31)
# │ └─────── 시 (0-23)
# └───────── 분 (0-59)
# 매일 새벽 3시
0 3 * * * /bin/zsh -l -c 'cd ~/project && claude -p "코드 리뷰" > ~/logs/review.log 2>&1'
# 평일 오전 9시
0 9 * * 1-5 /bin/zsh -l -c 'cd ~/project && claude -p "일일 리포트"'
# 매주 월요일 오전 10시
0 10 * * 1 /bin/zsh -l -c 'cd ~/project && claude -p "주간 요약"'
# 15분마다
*/15 * * * * /bin/zsh -l -c 'cd ~/project && claude -p "상태 체크"'
# 매월 1일 자정
0 0 1 * * /bin/zsh -l -c 'cd ~/project && claude -p "월간 리포트"'
# 주의사항
# ❌ 잘못된 예시 (환경변수 없음)
0 3 * * * cd ~/project && claude -p "리뷰"
# ✅ 올바른 예시 (환경변수 로딩)
0 3 * * * /bin/zsh -l -c 'cd ~/project && claude -p "리뷰"'
# ✅ stderr도 로깅
0 3 * * * /bin/zsh -l -c 'cd ~/project && claude -p "리뷰" 2>&1 >> ~/logs/error.log' launchd의 장점
- 잠자기 후 실행: Mac이 잠자기에서 깨어난 후 놓친 작업을 자동으로 실행합니다
- 실패 시 자동 재시도: 작업이 실패하면 자동으로 재시도합니다
- 환경변수 완전 지원: 별도의 환경변수 로딩이 필요 없습니다
- 로그 자동 관리: system.log에 자동으로 로그가 기록됩니다
- 배터리/네트워크 인식: 조건부 실행이 가능합니다 (배터리 부족 시 건너뛰기 등)
- 세밀한 권한 관리: 프로덕션 수준의 안정적인 스케줄링이 가능합니다
ℹ️ 설정 복잡도
launchd는 XML plist 파일로 설정하므로 cron보다 초기 설정이 복잡합니다. 하지만 안정성과 기능 면에서 macOS 환경에 최적화되어 있습니다.
Background Agent Support
3
Step 3 / 3
Background Agent 확인
2025년 12월 추가 (v2.0.60)
- 메인 태스크가 끝나도 백그라운드 에이전트가 계속 작동
- 장시간 실행 태스크에 유용