Cron Tab 作为特定用户和 python 虚拟环境

Cron Tab 作为特定用户和 python 虚拟环境

想要以特定用户 (xfeautomation) 和 python 虚拟环境的身份运行每小时的 cron 作业。以特定用户身份运行,我是否必须将脚本位置添加到 PATH 中?我当前的 cron 作业如下所示:

0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

这是正确或最佳的方法吗?TIA

答案1

切换到该用户。

sudo su - xfeautomation

跑步

crontab -e

会出现一个带有空文件的文件编辑器。在其中添加不带用户名的工作并保存。

0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

确认:

sudo su - xfeautomation crontab -l

或者

sudo crontab -u xfeautomation

答案2

以特定用户身份运行,我是否必须将脚本位置添加到 PATH 中?

当您使用绝对路径时,通常不需要修改 PATH 环境变量,例如您现在所做的/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

作为系统管理员,您可以通过多种方式创建以不同用户 ID 运行的计划批处理作业:

  1. 正如解释的那样这个答案为该用户设置个人 crontab。个人 crontab 中的作业将始终在其所有者的用户 ID 下运行。
    请注意,当您作为管理员为另一个用户设置个人 crontab 时,该用户将能够修改和删除该 cron 作业规范,从而撤销您的工作。

  2. 或者你也可以从系统 crontab 安排系统作业。系统 crontab(通常/etc/crontab和/或 中的插入文件/etc/cron.d/)由 root 拥有,非特权用户无法修改。系统 crontab 中的作业规范支持个人 crontab 文件中不存在的额外字段:字段 #6 需要用户名,例如xfeautomation将用于执行作业的用户 ID。
    您发布的语法对于 中的条目/etc/crontab或插入文件(如/etc/cron.d/wf_api_linux

    0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
    

由于您记录了所有输出和错误,因此不必担心,但通常情况下,当您设置系统 crontab 时,cron 会将标准输出和错误通过电子邮件发送给 root,而当您使用个人 crontab 时,则直接发送给用户。

据我所知,这两种方法实际上都会产生相同的工作条件,除了对工作规范和电子邮件的所有权的担忧之外,它们是等效的。

相关内容