Dalam tutorial ini, anda akan mempelajari kepentingan pekerjaan cron dan sebab anda memerlukannya. Anda akan melihat python-crontab
, modul Python yang berinteraksi dengan crontab
. Anda akan belajar cara menggunakan modul python-crontab
untuk mengendalikan kerja cron daripada program Python. python-crontab
,一个与 crontab
交互的 Python 模块。您将学习如何使用 python-crontab
模块从 Python 程序操作 cron 作业。
在系统管理期间,需要在服务器上运行后台作业来执行例行任务。 Cron 是一个系统进程,用于定期执行后台任务。 Cron 需要一个名为 crontab
的文件,其中包含要在特定时间执行的任务列表。所有这些作业都在指定时间在后台执行。
要查看系统上运行的 cron 作业,请导航到终端并输入:
crontab -l
上述命令显示 crontab
文件中的作业列表。要将新的 cron 作业添加到 crontab
,请输入:
crontab -e
上述命令将显示 crontab
文件,您可以在其中安排作业。假设您有一个名为 hello.py
的文件,如下所示:
print("Hello World")
现在,要安排一个 cron 作业来执行上述脚本以输出到另一个文件,您需要添加以下代码行:
50 19 * * * python hello.py >> a.txt
上面的代码行安排文件的执行,并将输出输出到名为 a.txt
的文件。要执行的命令之前的数字定义了作业的执行时间。计时语法有五个部分:
计时语法中的星号(*)表示每次都会运行。
python-crontab
是一个 Python 模块,它提供对 cron 作业的访问,并使我们能够从 Python 程序操作 crontab
文件。它自动执行手动修改 crontab
文件的过程。要开始使用 python-crontab
,您需要使用 pip 安装模块:
pip install python-crontab
安装 python-crontab
后,将其导入 Python 程序。
from crontab import CronTab
让我们使用 python-crontab
模块来编写我们的第一个 cron 作业。创建一个名为 writeDate.py
的 Python 程序。在 writeDate.py
中,添加代码以将当前日期和时间打印到文件中。这是 writeDate.py
的外观:
import datetime with open('dateInfo.txt','a') as outFile: outFile.write('\n' + str(datetime.datetime.now()))
保存上述更改。
让我们创建另一个 Python 程序,它将安排 writeDate.py
Python 程序每分钟运行一次。创建一个名为 scheduleCron.py
的文件。
将 CronTab
模块导入到 scheduleCron.py
程序中。
from crontab import CronTab
使用CronTab
模块,我们来访问系统crontab
。
my_cron = CronTab(user='your username')
上述命令创建了用户对系统 crontab
的访问权限。让我们遍历 cron 作业,您应该能够看到为特定用户名手动创建的任何 cron 作业。
for job in my_cron: print(job)
保存更改并尝试执行 scheduleCron.py
,您应该拥有特定用户的 cron 作业列表(如果有)。您应该能够在执行上述程序时看到类似的内容:
50 19 * * * python hello.py >> a.txt # at 5 a.m every week with:
让我们继续使用 CronTab
模块创建一个新的 cron 作业。您可以使用新方法创建一个新的 cron,并指定要执行的命令。
job = my_cron.new(command='python /home/jay/writeDate.py')
正如你在上面这行代码中看到的,我已经指定了 cron 作业执行时要执行的命令。一旦有了新的 cron 作业,您就需要安排 cron 作业。
让我们安排 cron 作业每分钟运行一次。因此,以一分钟的间隔,当前日期和时间将被附加到 dateInfo.txt
文件中。要安排每分钟执行一次作业,请添加以下代码行:
job.minute.every(1)
安排作业后,您需要将作业写入 cron 选项卡。
my_cron.write()
这是 scheduleCron.py
文件:
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
执行后,使用以下命令检查 crontab
文件:
crontab -l
上面的命令应该显示新添加的 cron 作业。
* * * * * python3 home/vaati/Desktop/writeDate.py
稍等一下,检查您的主目录,您应该能够看到 dateInfo.txt
crontab
yang mengandungi senarai tugasan untuk dilaksanakan pada masa tertentu. Semua kerja ini dilaksanakan di latar belakang pada masa tertentu. 🎜
🎜Untuk melihat kerja cron yang berjalan pada sistem anda, navigasi ke terminal dan masukkan: 🎜
job = my_cron.new(command='python3 home/vaati/Desktop/writeDate.py', comment='dateinfo')
crontab
. Untuk menambah tugas cron baharu pada crontab
, masukkan: 🎜
my_cron = CronTab(user='vaati') for job in my_cron: print(job)
crontab
di mana anda boleh menjadualkan kerja. Katakan anda mempunyai fail bernama hello.py
seperti ini: 🎜
my_cron = CronTab(user='vaati') for job in my_cron: if job.comment == 'dateinfo': print(job)
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')
a.txt
. Nombor sebelum arahan untuk dilaksanakan mentakrifkan bila kerja akan dilaksanakan. Sintaks masa mempunyai lima bahagian: 🎜
python-crontab
ialah modul Python yang menyediakan akses kepada kerja cron dan membolehkan kami mengendalikan crontab
daripada dokumen program Python. Ia mengautomasikan proses mengubah suai fail crontab
secara manual. Untuk mula menggunakan python-crontab
anda perlu memasang modul menggunakan pip: 🎜
crontab -l
python-crontab
, import ia ke dalam program Python. 🎜
* */10 * * * python3 /home/Desktop/vaati/writeDate.py # dateinfo
python-crontab
untuk menulis tugas cron pertama kami. Buat program Python yang dipanggil writeDate.py
. Dalam writeDate.py
, tambahkan kod untuk mencetak tarikh dan masa semasa pada fail. Inilah rupa writeDate.py
: 🎜
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()
writeDate.py
dijalankan setiap minit. Buat fail bernama scheduleCron.py
. 🎜
🎜Import modul CronTab
ke dalam program scheduleCron.py
. 🎜
my_cron.remove(comment='dateinfo')
CronTab
, kami mengakses sistem crontab
. 🎜
my_cron.remove_all()
crontab
. Mari kita ulangi kerja cron dan anda seharusnya dapat melihat sebarang tugas cron yang dibuat secara manual untuk nama pengguna tertentu. 🎜
my_cron.write()
scheduleCron.py
dan anda harus mempunyai senarai tugas cron untuk pengguna tertentu (jika ada). Anda sepatutnya dapat melihat sesuatu seperti ini apabila melaksanakan prosedur di atas: 🎜
from crontab import CronTab my_cron = CronTab(user='vaati') for job in my_cron: print(job.frequency())
CronTab
. Anda boleh menggunakan kaedah baharu untuk mencipta cron baharu dan tentukan arahan untuk dilaksanakan. 🎜
my_cron = CronTab(user='vaati') for job in my_cron: print(job.frequency_per_hour())
dateInfo.txt
. Untuk menjadualkan kerja untuk melaksanakan setiap minit, tambah baris kod berikut: 🎜
pip install croniter
import datetime sch = job.schedule(date_from=datetime.datetime.now())
scheduleCron.py
: 🎜
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())
crontab
menggunakan arahan berikut: 🎜
rrreee
🎜Arahan di atas harus menunjukkan tugas cron yang baru ditambah. 🎜
rrreee
🎜Tunggu sebentar dan semak direktori rumah anda, anda sepatutnya dapat melihat fail dateInfo.txt
, yang mengandungi tarikh dan masa semasa. Fail akan dikemas kini setiap minit dan tarikh dan masa semasa akan dilampirkan pada kandungan sedia ada. 🎜
要更新现有的 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
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。
Atas ialah kandungan terperinci Pengurusan kerja Cron berdasarkan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!