기술 · 실용 가이드
수동으로는 되는데 crontab에서는 실패하나요? 스크립트를 바꾸기 전에 cron 실행 문맥을 재현하세요
cron이 줄을 실제로 시작했는지 증명하고 사용자, 셸, 환경, 작업 디렉터리와 출력 경로를 비교한 뒤 예약 실행 한 번을 검증하세요.

대화형 터미널에서 성공한 명령도 cron이 다른 프로세스 문맥으로 시작하면 실패할 수 있습니다. 사용자, 셸, PATH, HOME, 작업 디렉터리, 비밀 공급원과 출력 처리가 달라질 수 있습니다.
권한을 넓히거나 로그인 프로필 전체를 불러오기 전에 시작 여부와 출력을 잡고 최소 환경으로 재현한 뒤 누락된 의존성 하나만 추가하세요.
1. cron이 실행을 시도했는지 증명
편집 전에 설치된 crontab, cron/crond 상태와 예약 시각의 시스템 로그를 읽으세요. 스케줄 이벤트 없음, 셸 시작, 프로그램 비정상 종료는 서로 다른 실패입니다.
한 번의 통제 실행에서 stdout과 stderr를 보호된 절대 경로로 보내고 숫자 종료 코드와 시각을 추가하세요. 메일 출력은 별도로 전달을 확인하세요.
2. 정확한 crontab과 사용자 확인
줄이 사용자 crontab, root crontab, /etc/crontab 또는 /etc/cron.d에서 왔는지 기록하세요. 시스템 형식은 사용자 필드가 있어 복사하면 해석이 달라집니다.
예약 계정으로 id, 그룹, HOME, SHELL과 정확한 crontab을 기록하세요. 편집한 관리자가 실행자라고 가정하지 마세요.
3. 문맥 차이 원장 작성
작업에 필요한 PATH, 로캘, 프록시, 설정, 자격 증명 파일 위치만 비교하세요. 현재 설명서는 cron이 SHELL, HOME, LOGNAME을 설정한다고 명시합니다.
전체 환경을 공개 로그에 덤프하면 토큰이 노출될 수 있습니다. 변수 이름과 가린 존재 여부만 기록하고 인터프리터와 실행 파일을 절대 경로로 증명하세요.
4. 경로와 작업 디렉터리 명시
Cron이 스크립트 디렉터리에서 시작한다는 보장은 없습니다. 명시적 cd -- /absolute/project && command를 쓰거나 입출력, 잠금과 임시 경로를 절대화하세요.
예약 사용자의 디렉터리 검색 권한과 같은 네임스페이스의 파일 존재를 확인하세요. root 터미널 성공은 일반 사용자 cron 접근 증거가 아닙니다.
5. 기다리지 않고 실패 재현
예약 사용자로 env -i를 사용해 HOME, PATH, SHELL과 검토된 변수만 남긴 테스트를 실행하세요. 다음 시각을 기다리지 않고 경계를 재현합니다.
crontab과 같은 인터프리터와 작업 위치를 쓰세요. 축소 테스트 실패는 문맥 또는 프로그램 가정, 성공은 일정, daemon 또는 정책 증거로 이어집니다.
6. 의존성 하나를 고치고 한 번 검증
누락된 경로, 변수, 디렉터리 이동, 자격 증명 파일 또는 서비스 의존성 하나만 추가하세요. 부작용을 모르면 전체 프로필을 읽지 말고 비밀을 crontab이나 로그에 넣지 마세요.
짧은 실행 한 번에 시작, 완료, 종료 코드와 의도한 산출물을 요구하세요. 이후 운영 주기를 복원하고 임시 로그를 제거하되 가린 원장은 보존하세요.
