나는 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
하고, 사용자 환경이 아닌 사용자 환경에서 설정해 놓는 것이 더 좋습니다.root
PYTHONPATH
PYTHONHOME
root
더 나은 경우에는 모두 스크립트에 넣은 다음 스크립트 자체를 crontab
.
/opt
다시 한번 강조하지만 사용자의 홈 디렉터리가 아닌 사용자의 홈 디렉터리 에 anaconda를 설치하는 것이 좋습니다 .