- 我有用户
root
和user1
- 我所有的 python 脚本都是由
user1
- 我创建了一个需要自动化的 bash 文件。 bash 文件调用我的 python 脚本
- 我已将 bash 调用添加到 cron 文件中
然而,我的Python环境root
是不是与它相同user1
(不同版本、库包等)。因此,当 cron 启动时,它会给我一些 python 错误,例如“未找到库”,因为root
正在使用环境。
如何确保我的 cron 命令在user1
python 环境下运行我的 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