
들어가며 · 조용히 멈춰 있던 자동 작업

맥에는 정해진 시간마다 프로그램을 자동으로 실행해 주는 기능이 있습니다. 저는 이걸로 블로그 로그인 상태를 계속 살아 있게 유지하는 작업을 걸어 뒀는데, 어느 날 확인해 보니 3주 가까이 단 한 번도 실행되지 않고 있었습니다.
더 무서운 건 겉으로는 아무 문제가 없어 보였다는 점입니다. 등록해 둔 설정 파일은 제자리에 멀쩡히 있었고, 파일만 열어 보면 정상이었습니다. 이 글은 '파일은 있는데 왜 안 돌았는지'를 찾아내고, 재부팅 후에도 다시 멈추지 않도록 고친 과정을 그대로 적은 기록입니다.
결론부터 말하면 원인은 두 가지였습니다. 첫째, 이 작업이 내부적으로 '실행 금지' 상태로 잠겨 있었습니다. 둘째, 작업이 필요로 하는 설정값 하나가 재부팅하면 사라지는 방식으로만 걸려 있었습니다.
무엇을 확인했나 · 마지막 실행이 7월 17일

작업 이름은 com.aiblog.keepalive였습니다. 확인해 보니 마지막으로 실행된 기록이 7월 17일이었고, 그 뒤로는 예약 시간이 와도 아무 일도 일어나지 않았습니다.
문제는 이 상태를 알아채기 어려웠다는 것입니다. 설정 파일은 맥이 예약 작업 정보를 보관하는 폴더(~/Library/LaunchAgents)에 그대로 있었습니다. 그래서 '파일이 있으니 잘 돌고 있겠지'라고 넘어가기 딱 좋았습니다.
하지만 launchctl list 출력에서는 이 작업이 보이지 않았습니다. 즉 파일은 존재하지만 서비스로는 등록되어 있지 않은 상태였던 것입니다.
원인 · '파일이 있다'와 '서비스가 돈다'는 다른 상태
맥의 예약 작업 시스템에는 각 작업을 강제로 켜고 끌 수 있는 별도의 내부 기록(override)이 있습니다. 이 작업은 그 내부 기록에 '실행 금지(disabled)'로 잠겨 있었습니다. 참고로 작업을 내릴 때 쓰는 bootout 명령은 작업을 멈추는 데서 끝나지 않고 이 내부 기록에 '실행 금지' 표시를 남기는 특성이 있습니다.
이렇게 잠겨 있으면 파일을 다시 넣어도, 잠금이 풀리지 않는 한 예약 시간이 와도 실행되지 않습니다. 저는 이 잠금 상태를 launchctl print-disabled까지 확인해서야 알 수 있었습니다.
두 번째 원인은 환경변수였습니다. 이 작업은 TISTORY_CDP_URL이라는 설정값에 의존하는데, 이 값을 launchctl setenv로만 넣어 둔 상태였습니다. 이 방식으로 넣은 값은 재부팅하면 사라집니다. 값이 사라지면 항상 켜져 있어야 할 브라우저가 아니라 옛날 프로필로 연결되어, 로그인 세션이 만료되는 경로가 되살아납니다.
| 겉보기 | 실제 상태 |
| 설정 파일이 폴더에 있음 | 서비스로 등록되어 있지 않음 |
| 파일 내용은 정상 | 내부 기록에 '실행 금지'로 잠김 |
| 환경변수가 잡혀 있음 | 재부팅하면 사라지는 임시 설정 |
어떻게 고쳤나 · 잠금 해제 + 설정 영구화
고친 순서는 다음과 같습니다.
- 실행 금지 잠금부터 해제 —
launchctl enable로com.aiblog.keepalive의 '실행 금지' 표시를 풀었습니다. - 서비스로 다시 등록(bootstrap) — 잠금을 푼 뒤 작업을 시스템에 다시 올렸습니다.
- 환경변수를 파일에 직접 박기 — 임시로만 잡혀 있던
TISTORY_CDP_URL을 두 작업의 설정 파일 안EnvironmentVariables항목에 직접 적었습니다. 이렇게 하면 재부팅해도 값이 남습니다. - 바로 한 번 실행해 확인(kickstart) — 예약 시간을 기다리지 않고 예약 시스템을 통해 1회 실행시켜, 종료 코드 0(정상 종료)과
세션 유효메시지를 눈으로 확인했습니다.
이번 사례에서는 4번까지 갔을 때 예약 경로를 통해서 실행 결과를 확인한 것이 유효했습니다. 손으로 직접 실행하면 잘 되는데 예약으로는 안 되는 경우가 있어, 예약 시스템을 거쳐 확인하니 실제로 고쳐졌는지 확신할 수 있었습니다.
전후 비교
| 항목 | 고치기 전 | 고친 후 |
| 작업 실행 | 7/17 이후 한 번도 안 돎 | 예약 경로로 정상 실행 확인 |
| 내부 잠금 | '실행 금지'로 잠김 | 잠금 해제 후 재등록 |
| 환경변수 | 재부팅하면 사라짐 | 설정 파일에 박아 재부팅에도 유지 |
| 확인 방법 | 파일 존재만 봄 | 실행 목록·잠금 상태·실행 결과까지 확인 |
남은 과제 · 다음에 또 조용히 멈추지 않으려면
이번 일에서 얻은 가장 큰 교훈은 맥의 예약 작업은 '파일이 있다'와 '서비스가 돈다'가 완전히 다른 상태라는 것입니다. 파일 존재만으로는 정상 여부를 절대 알 수 없습니다.
점검할 때는 최소한 이 세 가지를 함께 봐야 합니다.
- 실행 중 목록에 실제로 잡혀 있는가
- 내부 기록에 '실행 금지'로 잠겨 있지는 않은가(
print-disabled) - 마지막 실행 시각이 예상 주기 안에 있는가
또 자동화가 의존하는 설정값은 임시 명령이 아니라 설정 파일에 직접 박아 재부팅에도 살아남게 해야 합니다. 이번처럼 3주를 모르고 지나가지 않으려면, 파일 존재만 확인하는 습관을 버리고 위 세 가지를 함께 보는 점검 방식으로 바꾸는 것이 우선입니다.
'EP 빌드로그' 카테고리의 다른 글
| EP.38 AI 유튜브 채널 첫 3편 조회수 66배 차이, 무엇이 갈랐나 (0) | 2026.08.18 |
|---|---|
| EP.37 git push 검토 훅이 잘못된 폴더를 검사하던 버그, cd 명령 추적으로 해결한 기록 (0) | 2026.08.17 |
| EP.36 쇼츠 자막이 '움직이는 글자'로 바뀐 이유 — 정지 배경의 함정 EP.리팩터 (0) | 2026.08.16 |
| EP.35 매수할 때와 팔 때 정보를 한 줄로 잇기: 자동매매 기록 개선기 P0-C (0) | 2026.08.15 |
| EP.34 달러 자산 원화 환산, 왜 수익률과 따로 봐야 할까 (EP.P0-A) (0) | 2026.08.14 |