熟悉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中文網!