首頁  >  文章  >  後端開發  >  詳解使用python crontab設定linux定時任務

詳解使用python crontab設定linux定時任務

高洛峰
高洛峰原創
2017-02-10 09:26:331712瀏覽

熟悉linux的朋友應該知道在linux中可以使用crontab設定定時任務。可以透過指令crontab -e來寫任務。當然也可以直接寫入設定檔設定任務。

但是有時希望透過腳本自動設置,例如我們應用程式部署時等。有需求當然就得想辦法解決,不然在程式猿界混(一群自得其樂的猿猴)。

下面進入正題,開始想透過以寫檔案的形式設置,透過在設定檔中直接追加一行即可。但是讀寫檔案難免有點繁瑣,再例如:設定任務時要檢查任務是否已經存在;根據輸入參數設定對應的任務等。以讀寫文件難免不太合適。所以想到了「萬能」的大python。

噹噹,今天的主角上場:python-crontab模組。安裝直接

$ pip install python-crontab

下面在腳本上就可以方便的設定計劃任務了

from crontab import CronTab

# 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限

my_user_cron = CronTab(user=True)

# 创建任务

job = my_user_cron.new(command='echo date >> ~/time.log')

# 设置任务执行周期,每两分钟执行一次

job.setall('*/2 * * * *')

# 当然还支持其他更人性化的设置方式,简单列举一些

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))

# 同时可以给任务设置comment,这样就可以根据comment查询,很方便

job.set_comment("time log job")

# 根据comment查询,当时返回值是一个生成器对象,不能直接根据返回值判断任务是否#存在,如果只是判断任务是否存在,可直接遍历my_user_cron.crons

iter = my_user_cron.find_comment('time log job')

# 同时还支持根据command和执行周期查找,基本类似,不再列举

# 任务的disable和enable, 默认enable

job.enable(False)

job.enable()

# 最后将crontab写入配置文件

my_user_cron.write()

下面可透過命令查看,是否創建成功:

希望對大家的學習有幫助,也希望大家多多支持php中文網。

更多詳解使用python crontab設定linux定時任務相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn