歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用Python crontab設置Linux定時任務

熟悉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()

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

$ crontab -l

很方便吧,還有一些功能沒有完全介紹,大家可以參考官方文檔https://pypi.python.org/pypi/python-crontab

零基礎如何入門Python http://www.linuxidc.com/Linux/2016-10/136485.htm

Ubuntu 14.04安裝Python 3.3.5  http://www.linuxidc.com/Linux/2014-05/101481.htm

CentOS上源碼安裝Python3.4  http://www.linuxidc.com/Linux/2015-01/111870.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

在CentOS 6.5上安裝Python2.7  http://www.linuxidc.com/Linux/2016-10/136206.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Copyright © Linux教程網 All Rights Reserved