繁体   English   中英

Cronjob 未在 Python 和 Mac 上运行

[英]Cronjob not running on Python and Mac

我正在尝试测试一个简单的 cronjob,当我检查 cronjob 是否已执行时,它显示它已执行但没有创建文件作为任务的一部分。

我有以下脚本 testjob.py 需要执行:

#!/usr/bin/env python3
import datetime

with open('testcron.txt', 'a') as outfile:
    outfile.write('\n' + str(datetime.datetime.now() + 'myname'))

这是cronjob:

#!/usr/bin/env python3
from crontab import CronTab

my_cron = CronTab(user='myname')
job = my_cron.new(command = 'python /Users/myname/Desktop/customers/cronjob/testjob.py')
#schedule job to run every 2 minutes
job.minute.every(1)
my_cron.write()

我该如何解决这个问题?

通过 crontab -e 运行我的 crontab 链接到图像: https : //i.stack.imgur.com/pj9Pt.png

您可以通过 crontab -e 设置一个 cron 作业,这比创建一个 python 脚本来创建一个 cron 作业要好得多。 但无论如何。

  1. 您可以首先通过实际运行 python 脚本并查看是否有任何错误,以及是否创建了文件来进行故障排除。

  2. 确保该 cron 作业的用户具有执行脚本的正确权限。

  3. 尝试直接从终端执行命令:python /Users/myname/Desktop/customers/cronjob/testjob.py。

从您的回复来看,它不起作用的原因是您的脚本无法打开文本文件。

当您通过以下方式执行脚本时:python /Users/myname/Desktop/customers/cronjob/testjob.py,文本文件“testcron.txt”的位置完全取决于您从何处执行脚本。

所以基本上,除非“testcron.txt”位于您执行脚本的相同路径/目录中,否则它不会工作。

您可以通过更改 cron 选项卡首先导航到文本文件所在的位置,然后运行 ​​python 脚本来解决此问题。

例如,如果您的“testcron.txt”文件位于/Users/myname/Desktop/customers/cronjob/则将您的 cron 作业写为:

cd /Users/myname/Desktop/customers/cronjob && python ./testjob.py

您可以不使用 python 命令运行 cron 作业,而是像 shell 脚本一样运行它。

测试作业.py:

#!/usr/bin/env python3
import datetime

with open('testcron.txt', 'a') as outfile:
    outfile.write('\n' + str(datetime.datetime.now() + 'myname'))

定时任务:

#!/usr/bin/env python3

from crontab import CronTab

my_cron = CronTab(user='myname')
job = my_cron.new(command = '/Users/myname/Desktop/customers/cronjob/testjob.py')
#schedule job to run every 2 minutes
job.minute.every(1)
my_cron.write()

确保首先运行chmod a+x /Users/myname/Desktop/customers/cronjob/testjob.py以使 python 可执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM