在本教程中,您將了解 cron 作業的重要性以及為什麼需要它們。您將看到 python-crontab
,一個與 crontab
互動的 Python 模組。您將學習如何使用 python-crontab
模組從 Python 程式操作 cron 作業。
什麼是 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-crontab
是一個 Python 模組,它提供對 cron 作業的訪問,並使我們能夠從 Python 程式操作 crontab
檔案。它會自動執行手動修改 crontab
檔案的過程。要開始使用 python-crontab
,您需要使用 pip 安裝模組:
pip install python-crontab
安裝 python-crontab
後,將其匯入 Python 程式。
from crontab import CronTab
寫出你的第一個 Cron 作業
讓我們使用 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
文件,其中包含當前日期和時間。文件將每分鐘更新一次,當前日期和時間將附加到現有內容中。
更新现有的 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中文網其他相關文章!

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。

Python適合快速開發和數據處理,而C 適合高性能和底層控制。 1)Python易用,語法簡潔,適用於數據科學和Web開發。 2)C 性能高,控制精確,常用於遊戲和系統編程。

學習Python所需時間因人而異,主要受之前的編程經驗、學習動機、學習資源和方法及學習節奏的影響。設定現實的學習目標並通過實踐項目學習效果最佳。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

Dreamweaver Mac版
視覺化網頁開發工具