cron의 PYTHONPATH 문제

cron의 PYTHONPATH 문제

나는 PATH를 이해하기 위해 cron을 사용하여 Python 스크립트를 자동으로 실행하려고 노력해 왔습니다.

먼저 사용자 crontab을 사용해 보았습니다.

crontab -e

저는 crontab을 다음과 같이 설정했습니다.

PYTHONPATH=/home/dpa/anaconda3/bin/python
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
36 15 * * * python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1

스크립트가 실행되지 않고 다음 오류가 발생합니다.

/bin/sh: 1: python: not found

그런 다음 슈퍼유저로 시도해 봅니다.

sudo crontab -e

나는 cronetab을 다음과 같이 설정했습니다.

PYTHONPATH=/home/dpa/anaconda3/bin
PATH=/home/dpa/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 
43 15 * * * su - dpa python /home/dpa/PycharmProjects/Parser/Parser.py >> /tmp/mycommand.log 2>&1

STDERR은 이제 다음과 같습니다:

-su: python: No such file or directory

답변1

첫째, 액세스 권한이 있으므로 root홈 디렉터리보다는 홈 디렉터리에서 컴파일하고 빌드하는 것이 좋습니다 anaconda./opt

실제로 수행하는 작업은 변수 PATH를 이 디렉터리 목록과 동일하게 설정하고 PYTHONPATH를 anaconda문제를 일으키는 실행 파일이 있는 디렉터리와 동일하게 설정하는 것입니다.

원하는 것을 얻으려면 더 나은 접근 방식은 루트가 된 다음 쉘이 다음과 같다고 가정하는 것입니다 bash.

export PATH=/home/dpa/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/home/dpa/anaconda3/lib
export PYTHONHOME=/home/dpa/anaconda3
bash

이렇게 하면 anaconda python과 해당 라이브러리가 포함된 디렉터리를 찾고 bash새 세션을 시작하도록 경로와 라이브러리가 설정됩니다. 그런 다음 python명령을 crontab.

이렇게 실행할 거라면 root굳이 할 필요도 없고 su -, 있는 그대로 실행 crontab하고, 사용자 환경이 아닌 사용자 환경에서 설정해 놓는 것이 더 좋습니다.rootPYTHONPATHPYTHONHOMEroot

더 나은 경우에는 모두 스크립트에 넣은 다음 스크립트 자체를 crontab.

/opt다시 한번 강조하지만 사용자의 홈 디렉터리가 아닌 사용자의 홈 디렉터리 에 anaconda를 설치하는 것이 좋습니다 .

관련 정보