首页 > 解决方案 > Python 中的 crontab 创建 cron 作业,但不运行脚本

问题描述

不知道我做错了什么,无论是代码,目录还是其他东西。请帮忙!

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

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

标签: pythoncron

解决方案


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

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

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

更改您的线路writeDate.py以写入绝对路径:

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

将解决您的问题。


推荐阅读