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 방지 (굳이??)

반복 및 예약 작업

Claude Code 자체에는 스케줄 기능이 없습니다 (2026년 1월 기준). 외부 스케줄러가 필요합니다.

⚠️ 잠자기 방지 모드 설정

도구 선택 전 잠자기 방지 모드를 실행하세요.
Mac: 시스템 설정 메뉴에서 Power Nap 또는 잠자기 모드 검색 후 Waker for network access 또는 네트워크 접근을 위해 깨우기 On

외부 스케줄러: cron vs. macOS 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 경험이 있음
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)

  • 메인 태스크가 끝나도 백그라운드 에이전트가 계속 작동
  • 장시간 실행 태스크에 유용