【问题标题】:Using python script with cron使用带有 cron 的 python 脚本
【发布时间】:2016-10-20 00:40:58
【问题描述】:

我在第一行有一个带有#!/usr/bin/python 的python 脚本。我可以使用 python myScp.py. 从 CLI 运行它

但作为 cron 脚本的一部分。 python 脚本无法运行。 cron 已经过测试,运行 python 脚本,可以写入 /tmp/crontest.txt

好像是目录问题。我用os.getcwd(). 进行了测试,它是正确的......当 cron 运行脚本时,它会抛出一个错误。从 CLI 运行:/usr/bin/python myScp.py 会引发相同的错误。

Traceback (most recent call last):
  File "/myScp.py", line 31, in <module>
    execfile(dn2 + 'anotherScpt.py')
IOError: [Errno 2] No such file or directory: './anotherScpt.py'

【问题讨论】:

  • 你的 Python 版本实际上是在那个路径上吗?请改用#!/usr/bin/env python - 无论系统设置如何,这都应该更好地获得正确的路径。另外,尝试使用 ./myScp.py 执行文件,因为这就是 cron 本质上要做的事情。
  • 很明显错误是找不到其他文件。那个文件在吗?您是否确保它正在寻找正确的路径?
  • 是的。我用 python myscp.py 运行脚本一切正常。
  • 如何填写dn2./ 指的是当前目录,我很肯定你认为它不是cron 实际使用的东西。
  • @favoretti 不使用默认 python 的本地目录??

标签: python cron


【解决方案1】:

我们首选的方法是在 crontab 条目中明确指定工作目录:

0 0  * * * cd /my/project; /opt/python-2.7/bin/python bin/myscript.py

【讨论】:

    【解决方案2】:

    鉴于错误,您的问题是您依赖位于特定目录中的程序来执行另一个文件。

    当您在它所在的目录中运行程序时,它可以找到该文件 - 当您(或 cron)在该目录之外运行它时,它找不到该文件。您需要将文件放在脚本可以找到的位置,使用绝对路径,或者在程序中找到脚本的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 2011-05-28
      • 1970-01-01
      • 2018-03-25
      • 2015-07-21
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多