熟悉linux的朋友應(yīng)該知道在linux中可以使用crontab設(shè)置定時任務(wù)??梢酝ㄟ^命令crontab -e編寫任務(wù)。當(dāng)然也可以直接寫配置文件設(shè)置任務(wù)。
但是有時候希望通過腳本自動設(shè)置,比如我們應(yīng)用程序部署時等。有需求當(dāng)然就得想辦法解決,不然在程序猿界混(一群自得其樂的猿)。
下面進(jìn)入正題,開始想通過以寫文件的形式設(shè)置,通過在配置文件中直接追加一行即可。但是讀寫文件難免有點(diǎn)繁瑣,再比如:設(shè)置任務(wù)時要檢查任務(wù)是否已經(jīng)存在;根據(jù)輸入?yún)?shù)設(shè)置相應(yīng)的任務(wù)等。以讀寫文件難免不太合適。所以想到了“萬能”的大python。
當(dāng)當(dāng)當(dāng),今天的主角上場:python-crontab模塊。安裝直接
$ pip install python-crontab
下面在腳本上就可以方便的設(shè)置計(jì)劃任務(wù)了
from crontab import CronTab# 創(chuàng)建當(dāng)前用戶的crontab,當(dāng)然也可以創(chuàng)建其他用戶的,但得有足夠權(quán)限my_user_cron = CronTab(user=True)# 創(chuàng)建任務(wù)job = my_user_cron.new(command='echo date >> ~/time.log')# 設(shè)置任務(wù)執(zhí)行周期,每兩分鐘執(zhí)行一次job.setall('*/2 * * * *')# 當(dāng)然還支持其他更人性化的設(shè)置方式,簡單列舉一些job.minute.during(5,50).every(5)job.hour.every(4)job.day.on(4, 5, 6)job.dow.on('SUN')job.dow.on('SUN', 'FRI')job.month.during('APR', 'NOV')job.setall(time(10, 2))job.setall(date(2000, 4, 2))job.setall(datetime(2000, 4, 2, 10, 2))# 同時可以給任務(wù)設(shè)置comment,這樣就可以根據(jù)comment查詢,很方便job.set_comment("time log job")# 根據(jù)comment查詢,當(dāng)時返回值是一個生成器對象,不能直接根據(jù)返回值判斷任務(wù)是否#存在,如果只是判斷任務(wù)是否存在,可直接遍歷my_user_cron.cronsiter = my_user_cron.find_comment('time log job')# 同時還支持根據(jù)command和執(zhí)行周期查找,基本類似,不再列舉# 任務(wù)的disable和enable, 默認(rèn)enablejob.enable(False)job.enable()# 最后將crontab寫入配置文件my_user_cron.write() 下面可通過命令查看,是否創(chuàng)建成功:
$ crontab -l
很方便吧,還有一些功能沒有完全介紹,大家可以參考官方文檔https://pypi.python.org/pypi/python-crontab
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選