【问题标题】:Crontab running a python script with parameters [closed]Crontab 运行带有参数的 python 脚本[关闭]
【发布时间】:2017-04-08 17:21:11
【问题描述】:

我想弄清楚为什么我的 crontab 没有运行我的 python 脚本,我怀疑这是由于我的参数:

这就是它的样子:

0       3       * * *   root    /usr/bin/python && /usr/bin/python -q /root/tools/script.py parm1 parm2 2>&1 >>/var/log/python-tools.log

所以基本上我可以在终端中运行它:

$ python script.py parm1 parm2

但是当我尝试在 crontab 中使用上述行时,它不起作用

【问题讨论】:

  • 为什么开头有/usr/bin/python &&
  • 我在 Python 文档中找不到 -q 选项。它应该做什么?
  • 您是否检查过 root 的电子邮件中来自 cron 的错误消息?
  • 嗯好问题,从另一行复制忘记删除...
  • 哪个部分,/usr/bin/python &&-q 选项?

标签: python crontab


【解决方案1】:

-qpython 的无效参数。而且你不应该在它之前有/usr/bin/python &&

0 3 * * * root /usr/bin/python /root/tools/script.py parm1 parm2 2>&1 >>/var/log/python-tools.log

【讨论】:

    【解决方案2】:

    首先,这个脚本必须从根目录运行吗?这通常是个坏主意。

    其次是 && 的使用,这意味着它只会在之前的命令成功退出的情况下运行该命令,因为在第一个命令中你只是在运行 python 而它实际上并没有做任何你不可能退出的事情成功代码。

    【讨论】:

    • 它正在写入/var/log中的日志文件,这通常需要root权限。
    • 您是否可以更改该特定日志文件的权限?或者也许使用另一个不需要root的位置和日志文件?这样你就不需要 root 整个脚本
    • 他的脚本也位于/root/tools。我的猜测是脚本正在执行一些系统维护任务。
    • 是的,我同意 root 是一个糟糕的选择,但是 Barmar 是对的,在这种情况下它是必需的,我现在删除了 &&,因为你也是对的,这一步实际上不需要...来自另一个 crontab,它是一个正在运行的 PHP 脚本,并没有真正考虑到这一点:)
    猜你喜欢
    • 2014-07-04
    • 2012-08-21
    • 2015-10-05
    • 2017-12-16
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多