搜索
首页后端开发Python教程基于Python的Cron作业管理

基于Python的Cron作业管理

在本教程中,您将了解 cron 作业的重要性以及为什么需要它们。您将看到 python-crontab,一个与 crontab 交互的 Python 模块。您将学习如何使用 python-crontab 模块从 Python 程序操作 cron 作业。

什么是 Cron?

在系统管理期间,需要在服务器上运行后台作业来执行例行任务。 Cron 是一个系统进程,用于定期执行后台任务。 Cron 需要一个名为 crontab 的文件,其中包含要在特定时间执行的任务列表。所有这些作业都在指定时间在后台执行。

要查看系统上运行的 cron 作业,请导航到终端并输入:

crontab -l

上述命令显示 crontab 文件中的作业列表。要将新的 cron 作业添加到 crontab 文件中的作业列表。要将新的 cron 作业添加到

,请输入:

crontab -e
crontab 文件,您可以在其中安排作业。假设您有一个名为 hello.py上述命令将显示

文件,您可以在其中安排作业。假设您有一个名为 hello.py 的文件,如下所示:

print("Hello World")

现在,要安排一个 cron 作业来执行上述脚本以输出到另一个文件,您需要添加以下代码行:

50 19 * * * python hello.py >> a.txt
a.txt上面的代码行安排文件的执行,并将输出输出到名为

的文件。要执行的命令之前的数字定义了作业的执行时间。计时语法有五个部分:
  1. 分钟
  2. 小时
  3. 一月中的某天
  4. 星期几

计时语法中的星号(*)表示每次都会运行。

Python-Crontab 简介

python-crontab 是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序操作 crontab 文件。它自动执行手动修改 crontab 文件的过程。要开始使用 python-crontab

是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序操作

文件。它自动执行手动修改 python-crontab 文件的过程。要开始使用

,您需要使用 pip 安装模块:

pip install python-crontab

安装

后,将其导入 Python 程序。python-crontab 模块来编写我们的第一个 cron 作业。创建一个名为 writeDate.py 的 Python 程序。在 writeDate.py 中,添加代码以将当前日期和时间打印到文件中。这是 writeDate.py

from crontab import CronTab

编写你的第一个 Cron 作业

让我们使用

模块来编写我们的第一个 cron 作业。创建一个名为 writeDate.py 的 Python 程序。在 writeDate.py 中,添加代码以将当前日期和时间打印到文件中。这是 writeDate.py 的外观:writeDate.py Python 程序每分钟运行一次。创建一个名为 scheduleCron.py

import datetime

with open('dateInfo.txt','a') as outFile:
    outFile.write('\n' + str(datetime.datetime.now()))

保存上述更改。

CronTab 模块导入到 scheduleCron.py让我们创建另一个 Python 程序,它将安排

的文件。

CronTab模块,我们来访问系统crontab

程序中。

from crontab import CronTab
crontab使用

模块,我们来访问系统

scheduleCron.py

my_cron = CronTab(user='your username')

上述命令创建了用户对系统

的访问权限。让我们遍历 cron 作业,您应该能够看到为特定用户名手动创建的任何 cron 作业。CronTab

for job in my_cron:
    print(job)

保存更改并尝试执行

,您应该拥有特定用户的 cron 作业列表(如果有)。您应该能够在执行上述程序时看到类似的内容:

50 19 * * * python hello.py >> a.txt # at 5 a.m every week with:

让我们继续使用 dateInfo.txt 模块创建一个新的 cron 作业。您可以使用新方法创建一个新的 cron,并指定要执行的命令。

job = my_cron.new(command='python /home/jay/writeDate.py')

正如你在上面这行代码中看到的,我已经指定了 cron 作业执行时要执行的命令。一旦有了新的 cron 作业,您就需要安排 cron 作业。

让我们安排 cron 作业每分钟运行一次。因此,以一分钟的间隔,当前日期和时间将被附加到 scheduleCron.py 文件中。要安排每分钟执行一次作业,请添加以下代码行:

job.minute.every(1)

安排作业后,您需要将作业写入 cron 选项卡。

my_cron.write()

这是 crontab 文件:

from crontab import CronTab

my_cron = CronTab(user='vaati')
job = my_cron.new(command='python3 /home/Desktop/vaati/writeDate.py')
job.minute.every(1)

my_cron.write()

保存以上更改并执行Python程序。

python scheduleCron.py

执行后,使用以下命令检查 dateInfo.txt 文件:

crontab -l
🎜上面的命令应该显示新添加的 cron 作业。🎜
* * * * * python3 home/vaati/Desktop/writeDate.py
🎜稍等一下,检查您的主目录,您应该能够看到 🎜 文件,其中包含当前日期和时间。该文件将每分钟更新一次,当前日期和时间将附加到现有内容中。🎜

更新现有的 Cron 作业

要更新现有的 cron 作业,您需要使用命令或使用 ID 来查找 cron 作业。使用 python-crontab 创建 cron 作业时,可以以注释的形式为 cron 作业设置 Id。以下是如何创建带有注释的 cron 作业:

job = my_cron.new(command='python3 home/vaati/Desktop/writeDate.py', comment='dateinfo')

如上面的代码行所示,已使用注释 dateinfo 创建了一个新的 cron 作业。上述注释可用于查找 cron 作业。

您需要做的是迭代 crontab 中的所有作业,并使用注释 dateinfo 检查作业。这是代码:

 my_cron = CronTab(user='vaati')
 for job in my_cron:
     print(job)

使用 job.comment 属性检查每个作业的评论。

 my_cron = CronTab(user='vaati')
 for job in my_cron:
     if job.comment == 'dateinfo':
         print(job)

完成作业后,重新安排 cron 作业并写入 cron。完整代码如下:

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron:
    if job.comment == 'dateinfo':
        job.hour.every(10)
        my_cron.write()
        print('Cron job modified successfully')

保存上述更改并执行 scheduleCron.py 文件。使用以下命令列出 crontab 文件中的项目:

crontab -l

您应该能够看到带有更新的计划时间的 cron 作业。

* */10 * * * python3 /home/Desktop/vaati/writeDate.py # dateinfo

从 Crontab 清除作业

python-crontab 提供了从 crontab 中清除或删除作业的方法。您可以根据计划、注释或命令从 crontab 中删除 cron 作业。

假设您想通过 crontab 中的注释 dateinfo 清除作业。代码是:

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron
    if job.comment == 'dateinfo':
        my_cron.remove(job)
        my_cron.write()

同样,要根据评论删除作业,可以直接调用 my_cron 上的 remove 方法,无需任何迭代。这是代码:

my_cron.remove(comment='dateinfo')

要删除 crontab 中的所有作业,可以调用 remove_all 方法。

my_cron.remove_all()

完成更改后,使用以下命令将其写回 cron:

my_cron.write()

计算工作频率

要检查使用 python-crontab 执行作业的次数,您可以使用 Frequency 方法。获得作业后,您可以调用名为 Frequency 的方法,该方法将返回该作业在一年内执行的次数。

from crontab import CronTab

my_cron = CronTab(user='vaati')
for job in my_cron:
    print(job.frequency())

要查看一小时内作业执行的次数,可以使用方法 Frequency_per_hour

my_cron = CronTab(user='vaati')
for job in my_cron:
    print(job.frequency_per_hour())

要查看一天中的作业频率,可以使用方法 Frequency_per_day

检查作业计划

python-crontab 提供了检查特定作业的时间表的功能。为此,您需要在系统上安装 croniter 模块。使用 pip 安装 croniter

pip install croniter

安装 croniter 后,调用作业上的调度方法来获取作业调度。

import datetime

sch = job.schedule(date_from=datetime.datetime.now())

现在您可以使用 get_next 方法获取下一个作业计划。

print(sch.get_next())

完整代码如下:

import datetime
from crontab import CronTab

my_crons = CronTab(user='vaati')
for job in my_crons:
    sch = job.schedule(date_from=datetime.datetime.now())
    print(sch.get_next())

您甚至可以使用 get_prev 方法获取之前的时间表。

总结

在本教程中,您了解了如何开始使用 python-crontab 从 Python 程序访问系统 crontab。使用 python-crontab,您可以自动执行创建、更新和调度 cron 作业的手动过程。

您是否使用过 python-crontab 或任何其他库来访问系统 crontab ?我很想听听你的想法。请在论坛上告诉我们您的建议。

学习Python

无论您是刚刚入门还是希望学习新技能的经验丰富的程序员,都可以通过我们完整的 Python 教程指南学习 Python。

以上是基于Python的Cron作业管理的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Numpy数组与使用数组模块创建的数组有何不同?Numpy数组与使用数组模块创建的数组有何不同?Apr 24, 2025 pm 03:53 PM

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,内存效率段

Numpy数组的使用与使用Python中的数组模块阵列相比如何?Numpy数组的使用与使用Python中的数组模块阵列相比如何?Apr 24, 2025 pm 03:49 PM

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

CTYPES模块与Python中的数组有何关系?CTYPES模块与Python中的数组有何关系?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero

在Python的上下文中定义'数组”和'列表”。在Python的上下文中定义'数组”和'列表”。Apr 24, 2025 pm 03:41 PM

Inpython,一个“列表” isaversatile,mutableSequencethatCanholdMixedDatateTypes,而“阵列” isamorememory-效率,均质sepersequeSequeSequeReDencErequiringElements.1)

Python列表是可变还是不变的?那Python阵列呢?Python列表是可变还是不变的?那Python阵列呢?Apr 24, 2025 pm 03:37 PM

pythonlistsandArraysareBothable.1)列表Sareflexibleandsupportereceneousdatabutarelessmory-Memory-Empefficity.2)ArraysareMoremoremoremoreMemoremorememorememorememoremorememogeneSdatabutlesserversEversementime,defteringcorcttypecrecttypececeDepeceDyusagetoagetoavoavoiDerrors。

Python vs. C:了解关键差异Python vs. C:了解关键差异Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

Python vs.C:您的项目选择哪种语言?Python vs.C:您的项目选择哪种语言?Apr 21, 2025 am 12:17 AM

选择Python还是C 取决于项目需求:1)如果需要快速开发、数据处理和原型设计,选择Python;2)如果需要高性能、低延迟和接近硬件的控制,选择C 。

达到python目标:每天2小时的力量达到python目标:每天2小时的力量Apr 20, 2025 am 12:21 AM

通过每天投入2小时的Python学习,可以有效提升编程技能。1.学习新知识:阅读文档或观看教程。2.实践:编写代码和完成练习。3.复习:巩固所学内容。4.项目实践:应用所学于实际项目中。这样的结构化学习计划能帮助你系统掌握Python并实现职业目标。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能