본문 바로가기
TOP BOTTOM
1. 프로그래밍/TIL

crontab .py 실행 불가

by mola23 2025. 6. 29.

서버에서 직접 python 실행할 땐 실행되는데, crontab으로 하면 실행 안 됨

파이썬 경로/python 절대경로/test.py

1. 요약

1) 원인 분석

crontab의 환경은 사용자 터미널과 달라서
crontab에서 실행 시, 로컬에서 실행했던 환경변수 (PATH, LD_LIBRARY_PATH)를 지정해줘야 함

2) 해결 방법

crontab에 등록 시 아래와 같이 LD_LIBRARY_PATH를 등록해줘야 함

* * * * * LD_LIBRARY_PATH=[LD_LIBRARY_PATH에 so가 있는 경로] 파이썬 경로/python 절대경로/test.py​

 

2. 상세 (조치했던 방법들)

1) crontab 시, 로그 남기기

* * * * * 파이썬 경로/python 절대경로/test.py >> /var/log/cron.log 2>&1

 

2) crond 다시 켜기 (해결 안 됨)

ps -ef | grep cron
kill
crond

 

3) env -i로 테스트 해보기

env -i : cron과 유사한 빈 환경에서 실행하는 테스트. 완전히 깨끗한 환경에서 실행
- PATH, LD_LIBRARY_PATH, PYTHONPATH 등 아무것도 없음
env -i 파이썬 경로/python 절대경로/test.py

 

4) /etc/crontab 편집

 

[Python][MySQL] Crontab 수행시 변수 선언

crontab을 통해 크롤링 배치를 걸어두려 했으나, 콘솔에서는 잘만 수행되던 것이 crontab으로 등록하면 제대로 수행되지 않는 현상이 발견되었습니다.이렇게 제대로수행되지 않은 배치는 자꾸 메일

daedamee.tistory.com

/etc/crontab 에 등록한 crontab과 crontab -e에 등록한 crontab은 다르다.
따라서, crontab -e로 등록한 이상, /etc/crontab의 값을 바꾸는 게 의미가 없다.

항목 crontab -e /etc/crontab
사용자 전용 ✅ 현재 로그인한 사용자 전용 ❌ 시스템 전체 대상 (root 편집 필요)
수정 명령어 crontab -e sudo nano /etc/crontab 또는 vim 등
관리 권한 일반 사용자 root 또는 관리자만 수정 가능
용도 개별 사용자 작업 스케줄링 시스템 전체 작업 (예: 로그 로테이션 등)
 

5) crontab -e 가장 상단에 LD_LIBRARY_PATH=so 경로 추가해주기

① 개별 설정할 경우
* * * * * LD_LIBRARY_PATH=[LD_LIBRARY_PATH에 so가 있는 경로] 파이썬 경로/python 절대경로/test.py
② crontab 전체 설정 필요할 경우
LD_LIBRARY_PATH=[LD_LIBRARY_PATH에 so가 있는 경로]

... 기타명령어
* * * * * 파이썬 경로/python 절대경로/test.py
... 기타명령어

 

 

기타

`PATH` vs. `LD_LIBRARY_PATH`

- PATH : 실행 파일(명령어)을 찾는 경로
- LD_LIBRARY_PATH : 공유 라이브러리(.so 파일)를 찾는 경로

크론 자체가 잘 되는지 확인해보기

which cron
① 테스트 스크립트 작성
echo "echo hello from cron at \$(date) >> /home/your_user/cron_test.log" > /home/your_user/test_cron.sh
chmod +x /home/your_user/test_cron.sh
② 크론탭에 등록
crontab -e
* * * * * /home/your_user/test_cron.sh

 

댓글