lifecarelog
개발일지

launchd 잡이 조용히 죽어 있었어요 — Xcode 라이선스 게이트

맥에서 스케줄 잡 5개가 아무 소리 없이 멈춰 있던 원인이 Xcode 라이선스 동의 게이트였던 이야기와, 잡마다 개발자 도구 경로를 고정해 막은 과정입니다.

7분 읽기

자동화를 붙여 놓고 며칠 지나면 제일 무서운 게 "돌고 있다고 믿는 상태"예요. 에러 알림도 없고, 로그도 조용하고, 대시보드도 초록색인데 실제로는 아무것도 안 돌고 있는 거죠.

지난주에 딱 그 상황을 만났어요. 맥에서 launchd로 걸어 둔 스케줄 잡들이 죽어 있었는데, 저는 며칠 동안 몰랐습니다.

조용한 죽음의 정체

원인은 의외로 시시했어요. Xcode 명령줄 도구의 라이선스 동의 게이트입니다.

맥에서 Xcode나 명령줄 도구를 업데이트하면 라이선스에 다시 동의해야 하는 상태가 되는데, 이때 /usr/bin/python3 같은 시스템 도구가 막혀요. 터미널에서 직접 실행하면 "라이선스에 동의하라"는 안내가 뜨니까 바로 알아채요. 문제는 launchd가 돌리는 백그라운드 잡은 그 안내를 보여줄 화면이 없다는 거예요.

그래서 잡은 시작하자마자 죽고, 다음 스케줄에 또 시작해서 또 죽고를 반복합니다. 겉으로는 아무 일도 안 일어난 것처럼 보이고요.

Xcode 도구 업데이트라이선스 동의 대기 상태python3 실행 차단launchd 잡 즉시 종료알림 없음

고친 방법

2026년 9월 20일 커밋 하나로 처리했어요. 잡 정의 파일 5개에 개발자 도구 경로를 명시적으로 고정하는 환경 변수를 추가한 게 전부입니다. 승인 배치, 블로그 발송, 정리 작업, 알림 발송, 정합성 점검 — 이렇게 다섯 개 잡이 전부 같은 이유로 죽어 있었거든요.

launchd의 plist에는 잡별로 환경 변수를 넣는 자리가 있어요. 여기에 개발자 도구 경로를 박아 두면 라이선스 게이트가 걸린 시스템 도구 대신 지정한 경로를 쓰게 됩니다.

직접 고쳐 보니 수정 자체는 5분도 안 걸렸어요. 정작 오래 걸린 건 "왜 죽었는지" 찾는 쪽이었고요.

여기서 배운 것

launchd는 셸 프로필을 안 읽어요. 이게 핵심이에요. 터미널에서 잘 되는 명령이 잡으로 돌리면 안 되는 경우 대부분이 여기서 옵니다. PATH도, 개발자 도구 경로도, API 키도 전부 마찬가지예요. 터미널에서 성공한 걸 근거로 "무인 실행도 되겠지"라고 넘기면 안 됩니다.

상태가 성공이라고 실제로 돌아간 건 아니에요. 이번 일이 딱 그랬어요. 그래서 다른 저장소에서는 심장박동 감시 스크립트를 따로 두고 있는데, 이쪽도 비슷한 함정이 있었습니다. 2026년 9월 14일에 고친 건데, 과거 로그에 남은 에러 한 줄 때문에 정상으로 돌아온 뒤에도 계속 죽은 걸로 표시되던 문제였어요. 성공 패턴을 추가해서 해결했고요.

결국 감시 장치도 잘못 만들면 거짓말을 해요. 죽었는데 살았다고 하거나, 살았는데 죽었다고 하거나.

  • 무인 실행은 별도 검증 필요
  • 환경 변수는 잡 정의에 직접
  • 상태 초록색보다 실제 표면 확인
  • 감시 장치 자체도 검증 대상

다음에 쓸 점검 순서

같은 일을 다시 겪지 않으려고 순서를 정해 뒀어요.

  1. 새 잡을 걸면 터미널이 아니라 실제 스케줄 경로로 한 번 돌려 본다
  2. 그 잡이 읽는 환경 변수를 잡 정의 파일에 직접 적는다
  3. 마지막 성공 시각을 어딘가에 남기고, 오래 갱신이 없으면 알림을 받는다

3번이 제일 중요해요. 에러 알림은 잡이 살아 있어야 오거든요. 잡 자체가 죽으면 에러도 안 옵니다. 그래서 "성공했다는 신호가 며칠째 없다"를 따로 봐야 해요.

숫자를 드러내는 쪽도 손봤어요. 9월 21일 새벽에 파이프라인 상태를 한눈에 보는 점검 스크립트를 추가했는데, 수집은 되는데 실제로 안 쓰이는 구간을 숫자로 보여 주는 용도예요. 돌려 보니 "어디까지 오고 어디서 멈췄는지"가 바로 보이더라고요.

정리

1인 개발에서 자동화는 손을 덜어 주지만, 대신 조용히 망가지는 리스크를 떠안게 돼요. 사람이 매일 보는 화면이 아니니까요.

그래서 요즘은 자동화를 하나 만들 때마다 "이게 죽으면 내가 언제 알게 되지?"를 같이 정해 둡니다. 답이 "모르겠는데"면 만들다 만 거예요.

혹시 계산기 같은 단순한 도구를 찾고 계신다면 플랜씨도 한번 보세요. 대출이자나 연봉 실수령액을 로그인 없이 계산할 수 있게 만들어 둔 무료 서비스인데, 이런 도구는 조용히 죽을 일이 없어서 마음이 편하네요. 🙂

#launchd#자동화#1인개발

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.