Python Crontab 模块

2024 年 8 月 29 日 | 阅读 6 分钟

假设您使用过 sched 模块或 datetime 模块,大多数人都会同意您迟早需要计划一些事情。

如果您已经考虑过此类元素的扩展将如何持续存在,您可能也得出了一个结论:您可以编写一个可以持续、单调地发送相同事件的脚本。

演示示例

简化一切,您可能已经想到一个想法,或者一个问题:我如何自动化我的任务?

好消息。

这很容易实现!Cron 是一项功能,可以帮助运行命令,从而在特定时间或时间间隔内安排命令。

在处理这一切时,您可能已经想到一个想法或一个疑问:我能否自动化我的工作?

是的,可以。

这很容易实现!Cron 是一项有助于安排命令的功能,从而有助于在特定时间段内运行命令。

什么是 Cron?

Cron 是类 Unix 操作系统中一个基于时间的作业调度器。

它在软件开发环境中使用,用于安排待处理的作业,这些作业可以定期、以固定速率或您轻松设置的时间运行,无需任何帮助。

Python Crontab 模块语法

Cron 本身就需要一个庞大的教程来解释;因此,这里有一个简单的短文,可以帮助您了解我们将在这里处理的内容。

我们将使用 crontabs,其中包含我们已安排或将要安排的所有位置。

如果您在创建 cron 任务时遇到任何问题,您应该尝试一些在线工具,它们可以帮助您弄清楚语法。

Python Module crontab 工作原理

Python crontab 模块使创建 cron 任务的过程变得更加简单。

它为我们提供了一个简单的类,可以直接输入,而无需我们处理 cron 语法。

安装 python-crontab

要在 Python 中使用 cron 和 crontab,我们首先需要安装必要的模块,这可以通过 Python shell/命令提示符中的 pip 包管理器命令来完成。

这应该会自动安装必要的模块,一旦您完成,我们就可以开始使用了!

错误报告和开发

如需报告任何问题,您可以向 GitLab 问题跟踪器报告。请使用 push 和 Git 补丁将项目代码提交到 GitLab 托管。

注意:如果您在使用 CronTab 时遇到意外的关键字参数“client”错误,则您安装了错误的模块。您需要重新尝试安装 PyPI 或本地包管理器中的 python-crontab,而不是 crontab。

描述

crontab 模块用于读取和写入 crontab 文件、访问系统 cron 以及使用直接 API。

比较下面的大纲,您会注意到 W、L、# 和 ? 符号不支持,因为它们不是标准的 Linux 或 SystemV crontab 格式。

字段名强制性允许的值特殊字符附加值
月份中的天是的1-31* / , -< >
小时是的0-23* / , -< >
星期中的天是的0-6 或 SUN-SAT* / , -< >
分钟是的0-59* / , -< >
月份是的1-12 或 JAN-DEC* / , -< >

附加值是“<”表示最小值,例如分钟的 0 或天的 1。还有“>”表示最大值,例如小时的 23 或月的 12。

支持的特殊情况允许 crontab 行不使用字段。这些是在 SystemV 模式中不可用的支持的别名

情况含义
@weekly0 0 * * 0
@hourly0 * * * *
@daily0 0 * * *
@yearly0 0 1 1 *
@monthly0 0 1 * *
@midnight0 0 * * *
@reboot每次启动
@annually0 0 1 1 *

如何使用模块

这是 python-crontab 通常用法的基本示例。首先,使用 CronTab 类初始化一个 cron 对象;然后,使用 cron 对象精确定位 cron(在本例中创建一个新位置)。最后,通过调用对象上的 write 来将声明的更改写入 crontab。

或者,您可以使用 with 上下文管理器,它会在退出时自动调用 cron1 对象上的 write。

注意:许多用户报告说他们的新 cron tab 没有自动保存,或者该模块不起作用。如果您希望保存编辑,则必须使用 write()。有关 write 函数用法的完整详细信息,请参阅下文。

语法:创建一个新的 job_obj 就像

语法:设置 job_obj 的时间限制

语法:每个时间限制都会清除之前的限制

语法:追加限制是明确的

语法:一次设置所有时间切片

语法:将切片设置为 Python 日期对象

语法:运行 job_obj 的命令。在此处运行 job_obj 不会影响其与另一个 CronTab 进程的现有计划

语法:带注释创建 job_obj

语法:获取 job_obj 的注释或命令

语法:修改 job_obj 上的注释或命令

语法:禁用或启用 Job_obj

语法:有效性检查

语法:使用特殊语法

语法:通过命令子匹配或正则表达式查找现有的 job_obj

语法:通过注释精确匹配或正则表达式查找现有的 job_obj

语法:按计划查找现有的 job_obj

语法:清除 job_obj 的所有规则

语法:迭代所有 job_objs,包括禁用的(已注释掉的)

语法:迭代所有行;这包括所有注释和空行

语法:删除项目

语法:清除 cron 中的所有 job_objs

语法:将 CronTab 写回系统或文件名

语法:将 CronTab 写入新文件名

语法:写入此客户端的 CronTab(仅限 Unix)

语法:写入其他客户端的 CronTab

语法:验证 cron 时间字符串

语法:将 cron1 对象列表与另一个进行比较,并返回差异

语法:比较两个 Cron 项目是否相等