在预期的 python 环境中运行 cron 作业?

在预期的 python 环境中运行 cron 作业?
  • 我有用户rootuser1
  • 我所有的 python 脚本都是由user1
  • 我创建了一个需要自动化的 bash 文件。 bash 文件调用我的 python 脚本
  • 我已将 bash 调用添加到 cron 文件中

然而,我的Python环境root不是与它相同user1(不同版本、库包等)。因此,当 cron 启动时,它会给我一些 python 错误,例如“未找到库”,因为root正在使用环境。

如何确保我的 cron 命令在user1python 环境下运行我的 python 脚本而不是root

请注意,我已经尝试su在我的 cron 文件中使用一些变体,但它总是要求输入密码,我需要这是一个完全自动化的过程。

答案1

你尝试过使用吗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

答案2

如果您使用的是虚拟环境,还可以在 cron 中激活环境:

0 12 * * * * . /%user1-venv-location%/bin/activate; /path/to/bashscript.sh

相关内容