web-dev-qa-db-ja.com

意図したpython環境でcronジョブを実行しますか?

  • ユーザーrootuser1がいます
  • 私のpythonスクリプトはすべてuser1によって作成されました
  • 自動化する必要のあるbashファイルを作成しました。 bashファイルはmy pythonスクリプトを呼び出します
  • Bash呼び出しをcronファイルに追加しました

ただし、私のpython rootの環境はnotuser1の環境と同じです(異なるバージョン、ライブラリパッケージなど、など)ですから、cronが起動すると、root環境が使用されているため、python "library not found"のようなエラーが表示されます。

Cronコマンドがrootではなくuser1 python環境でpythonスクリプトを実行するようにするにはどうすればよいですか?

すでにcronファイルでsuのバリエーションをいくつか使用してみましたが、常にパスワードを要求するので、完全に自動化されたプロセスにする必要があることに注意してください。

3
Unknown Coder

Sudo suを使ってみましたか?

Sudo su -l "user1" -c "/path/to/bashscript.sh"

または、crontabの上部に必要な環境を設定することもできます。

Shell=/usr/local/bin/bash
PATH=<user1 path>
LOGNAME=user1
USER=user1
HOME=/home/user1

必要に応じて、bashファイルを実行する前に、user1設定ファイルを入手します。

0 12 * * * * . /home/user1/.bash_profile; /path/to/bashscript.sh
3
jesse_b