서버에서 직접 python 실행할 땐 실행되는데, crontab으로 하면 실행 안 됨
파이썬 경로/python 절대경로/test.py
1. 요약
1) 원인 분석
crontab의 환경은 사용자 터미널과 달라서
crontab에서 실행 시, 로컬에서 실행했던 환경변수 (PATH, LD_LIBRARY_PATH)를 지정해줘야 함
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 등 아무것도 없음
- 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 파일)를 찾는 경로
- 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
'1. 프로그래밍 > TIL' 카테고리의 다른 글
RSA (0) | 2022.03.13 |
---|---|
헷갈리는 용어 정리 - 라이브러리/패키지/모듈, 함수/메서드, 매개변수/(전달)인자, 클래스/객체 (0) | 2021.11.11 |
댓글