【问题标题】:Crontab in Python creates cron job, but doesn't run scriptPython 中的 Crontab 创建 cron 作业,但不运行脚本
【发布时间】:2019-07-12 17:44:02
【问题描述】:

不确定我做错了什么,无论是代码、目录还是其他问题。请帮忙!

from crontab import CronTab

my_cron = CronTab(user='bgoldberg')
job = my_cron.new(command='python /Users/bgoldberg/PythonScripts/FunStuff/writeDate.py')
job.minute.every(1)
my_cron.write()

这是 writeDate.py 脚本:

import datetime

with open('dateInfo.txt','a') as outFile:
    outFile.write('\n' + str(datetime.datetime.now()))

writeDate.py 脚本只是将当前时间戳写入 txt 文件,单独运行时可以正常工作。当我运行 python scheduleCron.py 时,它运行没有错误,但似乎它没有运行 writeDate.py 脚本,因为没有创建 txt 文件。当我输入 crontab -l 时,它正确显示了创建的作业: ***** python /Users/bgoldberg/PythonScripts/FunStuff/writeDate.py

不知道我做错了什么......

【问题讨论】:

  • 在 cron 中运行脚本之前是否以某种方式激活了您正在使用的环境?
  • 您在哪个目录中检查文本文件? writeDate.py 是在当前目录,还是某个特定目录下创建文本文件?
  • 谢谢!现在将'dateinfo.txt 更改为绝对路径,看看是否有任何变化。例如with open('/Users/bgoldberg/dateinfo.txt', 'a') as outFile: 并查看它是否写入您的主目录。
  • 好的,添加了 writeDate.py 内容。它应该在同一目录中创建 txt 文件,我很肯定它没有更新。 @snapcrack 我认为我没有使用环境,只是在我的用户目录中创建了一个 .py 文件并在命令行上运行。
  • @d_kennetz 成功了!更改为绝对路径,现在它出现了。谢谢

标签: python cron


【解决方案1】:

这是一个 cron “陷阱”。 cron 使用命令

python /Users/bgoldberg/PythonScripts/FunStuff/writeDate.py

您希望将其写入当前工作目录,但默认情况下 cron 将写入/var/log/syslog 或此的一些变体。它正在尝试写入您没有权限的某个地方(但它不会死),因此您需要指定输出文件的绝对路径。

writeDate.py 中的行更改为写入绝对路径:

with open('/Users/bgoldberg/dateinfo.txt', 'a') as outFile:

会解决你的问题。

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2014-04-04
    • 2010-09-14
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多