由于权限问题,Djangochrograph脚本无法从cron作业运行或手动运行

2024-05-28 20:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在通常的位置创建了一个自定义管理命令作为py文件。在

计时器安装位置正确,同步正常。在

我创建了如下cron作业

* * * * * /home/shofty/virtualenvs/webbricks/bin/chronograph -e /home/shofty/virtualenvs/webbricks/bin/activate_this.py -p /home/shofty/virtualenvs/webbricks/website

我还尝试了以下方法,因为我认为这可能是正确的,但不是文档中的内容

^{pr2}$

我添加了管理.pycron,因为它是你运行的告诉计时功能来寻找需要运行的作业。如果我在虚拟环境中运行管理.pycron它可以工作,作业也可以运行。在

这两个作业都无法运行,但当我以su或我的用户身份尝试手动运行它们时,由于权限被拒绝而失败。不知道他们指的是什么许可。有人见过这个吗?在


Tags: 文件py命令homebin作业virtualenvsthis
3条回答

答案是计时器.sh已经被计时器取代了。尽管这被认为能够激活一个env,但它还没有足够早地导入argparse,据我所知,它不是python2.5内置的,而是在2.6中。然后就要为计时脚本找到正确的论据组合,作为参考的是a-p和an-e,而不是an-s

另外,我必须以root用户身份运行脚本,但目标是用户virtualenv中的脚本。在

最后,我还必须将packages目录的站点路径添加到chronograph脚本中,因为在我完成之前,它无法找到argparse。在

使用虚拟环境时: 包括一个名为chronograph.sh的脚本。复制此文件 到项目目录。在

cp chronograph.sh ~/virtualenvs/webbricks/chronograph.sh

您需要打开此脚本并修改虚拟环境的activate的路径 脚本:

^{pr2}$

确保此文件是可执行的,然后更新您的crontab以执行 脚本。在

chmod a-x chronograph.sh

然后: crontab-e公司

* * * * * /home/shofty/virtualenvs/webbricks/chronograph.sh /home/shofty/virtualenvs/webbricks/website

确保将/path/to/your/project作为第一个参数传递给脚本。 这将确保cron在查找项目目录时不会出现问题。在

您可能会发现这对您的文件权限问题非常有用。File permission basics

您是否尝试以适当的用户/服务运行cron作业?在

要编辑其他Linux用户的crontab条目,请登录到root并使用-u{username}-e,如下所示。在

root@dev-db# crontab -u otheruser -e
@monthly /home/otheruser/fedora/bin/monthly-backup
00 09-18 * * * /home/otheruser/ubuntu/bin/check-db-status

相关问题 更多 >

    热门问题