====== Automail.sh: 자동화 실행 래퍼 스크립트 ====== `Automail.sh`는 `NewstoHR.py` 파이썬 스크립트를 **[[wiki:glossary:server_operations:linux|Linux]] 서버 환경**에서 안정적으로 자동 실행하기 위해 만들어진 셸 스크립트입니다. 주로 `crontab`과 같은 스케줄러에 등록되어 사용되며, 파이썬 코드가 실행되기 전 필요한 모든 사전 작업을 처리하는 **래퍼(Wrapper)** 역할을 합니다. === 주요 기능 및 실행 순서 === 1. **실행 경로 설정**: * 스크립트 시작 부분에서 `cd "$(dirname "$0")"` 명령을 사용합니다. * 이것은 `crontab`이 어떤 위치에서 이 스크립트를 실행하더라도, 항상 `Automail.sh` 파일이 위치한 디렉토리로 먼저 이동하도록 만듭니다. 이를 통해 파일 경로 관련 오류를 원천적으로 방지합니다. 2. **로그 기록 시작**: * 스크립트가 실행되는 시간과 함께 시작 로그를 `cron.log` 파일에 기록합니다. 3. **환경 변수 로드 및 파이썬 스크립트 실행**: * 이 스크립트의 가장 핵심적인 부분입니다. * `env $(grep ...)` 명령을 사용하여 `.env` 파일에 저장된 API 키, 비밀번호 등의 민감한 정보들을 **환경 변수로 설정**함과 동시에, 지정된 **파이썬 가상환경**(`/.venv/bin/python`)을 이용해 `NewstoHR.py`를 실행합니다. * 이 방식을 통해, 파이썬 코드 내에서 `os.getenv()`로 환경 변수를 안전하게 불러와 사용할 수 있습니다. 4. **실행 결과 로깅**: * `NewstoHR.py` 스크립트가 실행되면서 출력하는 모든 메시지(성공, 실패, 오류 등)와 스크립트 자체의 오류 메시지를 `>> "$LOG_FILE" 2>&1` 구문을 통해 `cron.log` 파일에 모두 기록합니다. * 이를 통해 스케줄링된 작업이 정상적으로 수행되었는지, 오류가 발생했다면 원인이 무엇인지 추적할 수 있습니다. 5. **로그 기록 종료**: * 스크립트 실행이 끝나는 시간을 `cron.log` 파일에 남기며 작업을 마칩니다. #!/bin/bash # ... (경로 설정) ... # 스크립트가 위치한 디렉토리로 이동 BASE_DIR=$(cd "$(dirname "$0")" && pwd) cd "$BASE_DIR" # ... (로그 및 변수 설정) ... echo "===== Crontab 스크립트 시작 =====" >> "$LOG_FILE" # .env 파일의 변수들을 환경변수로 삼아 파이썬 스크립트 실행 (핵심 로직) env $(grep -v ... "$ENV_FILE") "$VENV_PYTHON" "$PYTHON_SCRIPT" >> "$LOG_FILE" 2>&1 echo "===== Crontab 스크립트 종료 =====" >> "$LOG_FILE" 결론적으로 `Automail.sh`는 복잡한 파이썬 프로젝트를 자동화 환경에서 안정적으로 구동하기 위한 필수적인 장치입니다.