在这里,我们将深入探讨 Cron 任务的重要性,并了解为什么我们需要它们。在本教程中,我们将一同研究 python-crontab,这是一个 Python 模块,它允许我们直接与 crontab 进行交互和操作。
什么是 Cron 和 Crontab?
Cron 是一个强大的工具,它使用户能够按照预定的时间表自动运行脚本、命令或应用程序。所谓的 Crontab 文件,则包含了一份由 Corn(注:原文如此,通常指 Cron 守护进程)执行的任务列表。
CronJobs 在行业中应用非常广泛,主要用于自动调度一些重要且强制性的任务,例如抓取股票数据、定期更新数据库、生成并发送报告等。
运行以下命令即可安装该模块:
pip3 install python-crontab
!install-crontab安装 python-crontab
安装完软件包后,我们现在可以使用它来管理 cronjobs——无论是创建新的定时任务、更新现有任务,还是删除任务。要将其导入到我们的 Python 程序中,我们可以这样做:
from crontab import CronTab
使用 Cron 调度任务
Cron 使用调度表达式(schedule expressions)来了解我们希望在何时执行任务。CronJobs 的调度规范是根据 cron 实用程序的规则来指定的。它由如下符号组成:
> *
从最左边开始,第一个星号代表分钟(0 到 59 之间),第二个星号代表小时(0 到 24 之间),第三个代表一个月中的某一天,第四个代表一年中的某一个月,第五个代表一周中的某一天。
CRON 调度表达式
任务频率可以通过 cron 表格格式计算得出,这也是 cron job 的设置方式。为了更好地解释这一点,这里有几个例子:
- /2 :这将每 2 分钟运行一次
- 0 /8 1-6* :这将从周一到周六每 8 小时运行一次
- jan,feb :仅在 1 月和 2 月运行
- 0 4 * :每天凌晨 4 点运行
在 Crontab 中创建你的第一个 Cron 任务
这里有一些 Crontab 命令的示例:
> crontab -l # 列出所有 cronjobs
>
>
> crontab -e # 编辑 cronjob
>
>
> crontab -r # 删除 cronjobs
从 Crontab 中清除任务
我们可以使用 crontab 通过单个命令清除所有 cron 任务:
> crontab -r
下图演示了这一过程
!Cron Jobs Using Python正在删除 cron 任务
检查任务调度
我们可以通过运行以下命令找到 cronjobs 的调度情况:
> crontab -l
它将给出 cron 作业的所有详细信息,包括名称、调度和命令。
!Cron Jobs Using Python检查任务调度
检查 cron 作业的有效性
Cron 会在 Syslog 中记录每次执行命令的尝试。我们可以通过在 syslog 中 grep 命令名称来验证我们的作业是否调度正确。我们只需要运行这个命令:
> grep /home/Desktop/freeMemory.py /var/log/syslog
如果 cron 作业有效且没有错误地执行,这将返回一个成功的响应;如果由于某种原因失败,它将返回错误。此外,这在每次作业运行后都会刷新输出。
!Cron Jobs Using Python通过 grep syslog 检查 cron 作业有效性
使用 Python 和 subprocess 创建新的 Cronjob
例如,我们想要一个任务,每 1 小时后告诉我们当前使用了多少内存以及剩余多少内存。我们首先需要创建一个作业文件来执行此操作:
Python3
CODEBLOCK_f9931bc2
这段代码使用了 Python 中的 "subprocess" 模块。该模块帮助我们创建/生成新进程并运行它们——如果我们想在 Python 代码中运行一些 Linux 命令,主要会用到它。在这个程序中,我们想运行 "free" 这个 Linux 命令。这个命令能让我们知道系统此刻的内存统计信息。因此,我们使用 subprocess 模块运行这个命令,并将其输出存储在一个文件——"memoryInfo.txt" 中。
用于运行 Linux 命令的函数是 – check_output(command)。它接受命令字符串作为参数,并在运行后返回命令的标准输出。
以下是它将写入文件的内容:
![Screenshot-from-2023-06-17-21-58-37.png](https://media.geeksforgeeks.org/wp-content/uploads/2