【问题标题】:Python script not executing in crontabPython 脚本未在 crontab 中执行
【发布时间】:2012-08-05 22:59:16
【问题描述】:

所以我试图让我的服务器每小时执行一个 Python 脚本。

当我进入目录并使用 python twitter.py 运行它时,它工作正常。

但是,我在 crontab 中有这个条目,但它不起作用:

0 * * * * /run/twitterparse/twitter.py > /run/twitterparse

我试图让它每小时执行一次。

这是系统日志的输出:

Aug 5  13:00:01 localhost CRON[11474]: (root) CMD (/run/twitterparse/twitter.py >/run/twitterparse/)

Aug 5  13:00:01 localhost CRON[11473]: (CRON) info (No MTA installed, discarding output)

现在它应该做的是访问数据库并将来自网络的信息保存到该数据库中。该脚本在手动运行时可以正常运行,但不是自动运行。

【问题讨论】:

  • 它是可执行的并且有一个 hashbang,对吧?
  • 是否需要设置任何环境变量才能使twitter.py 工作?

标签: python linux crontab


【解决方案1】:

我通过这样做解决了我的问题

0 * * * * python /run/twitterparse/twitter.py > /run/twitterparse

并且py文件应该是可执行的

chmod +x twitter.py

【讨论】:

    【解决方案2】:

    你可能需要添加

    #!/usr/bin/python
    

    到主脚本的开头,带有您的 python 解释器的位置。

    并将脚本的权限更改为可执行

    chmod +x <main script name .py>
    

    希望对你有帮助

    【讨论】:

    • 添加了这个并做了 chmod,仍然没有运气,数据库中没有数据。
    • 而且我相信 usr/bin/python 是我的 python 解释器
    【解决方案3】:

    发送到终端(即 stdio 或 stderr)的 cron 脚本的任何输出都会发送到脚本注册的帐户的人。

    您可以从错误消息中看到它正在尝试发送此邮件但“未安装 MTA”,因此它正在丢弃所有诊断消息。

    您的第一步是解决 MTA 的问题,以便您可以接收邮件,或者确保将 stdio 和 stderr 写入日志文件。

    我可以看到的明显问题是输出被定向到非文件。

    /run/twitterparse/twitter.py > /run/twitterparse
    

    /run/twitterparse 不是文件夹吗?我猜:

    /run/twitterparse/twitter.py > /run/twitterparse/ouput.txt
    

    会解决一半的问题..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2012-02-02
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多