私は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をインストールすることをお勧めします。