Python中的Crontab创建了cron作业但不运行脚本

3

我不确定我的做法有什么问题,无论是代码、目录还是其他方面。请帮忙!

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 运行脚本之前,你是否以某种方式激活了你正在使用的环境? - snapcrack
1
你正在检查哪个目录的文本文件?writeDate.py会在当前目录还是某个特定目录中创建文本文件? - John Gordon
1
谢谢!现在将'dateinfo.txt更改为绝对路径,看看是否有任何变化。例如:with open('/Users/bgoldberg/dateinfo.txt', 'a') as outFile: 然后查看它是否写入了您的主目录。 - d_kennetz
1
好的,已添加writeDate.py的内容。它应该在同一目录下创建txt文件,我确定它没有更新。@snapcrack 我不认为我正在使用环境,只是在我的用户目录中创建了一个.py文件并在命令行上运行。 - BenG
1
@d_kennetz 那个方法有效!改成绝对路径后现在显示出来了。谢谢你。 - BenG
显示剩余2条评论
1个回答

2
这是一个cron的“陷阱”。Cron使用命令 python /Users/bgoldberg/PythonScripts/FunStuff/writeDate.py 你期望它写入到你当前的工作目录,但是cron默认会写入到/var/log/syslog或者其它类似的地方。它试图写入一个你没有权限的位置(但是它不会死掉),所以你需要指定输出文件的绝对路径。
writeDate.py中的代码改为写入绝对路径即可:
with open('/Users/bgoldberg/dateinfo.txt', 'a') as outFile:

最初的回答会解决你的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接