abstract:熟悉linux的朋友應(yīng)該知道在linux中可以使用crontab設(shè)置定時(shí)任務(wù)??梢酝ㄟ^命令crontab -e編寫任務(wù)。當(dāng)然也可以直接寫配置文件設(shè)置任務(wù)。但是有時(shí)候希望通過腳本自動(dòng)設(shè)置,比如我們應(yīng)用程序部署時(shí)等。有需求當(dāng)然就得想辦法解決,不然在程序猿界混(一群自得其樂的猿)。下面進(jìn)入正題,開始想通過以寫文件的形式設(shè)置,通過在配置文件中直接追加一行即可。但是讀寫文件難免有點(diǎn)繁瑣,再比如:設(shè)置任務(wù)時(shí)要
熟悉linux的朋友應(yīng)該知道在linux中可以使用crontab設(shè)置定時(shí)任務(wù)。可以通過命令crontab -e編寫任務(wù)。當(dāng)然也可以直接寫配置文件設(shè)置任務(wù)。
但是有時(shí)候希望通過腳本自動(dòng)設(shè)置,比如我們應(yīng)用程序部署時(shí)等。有需求當(dāng)然就得想辦法解決,不然在程序猿界混(一群自得其樂的猿)。
下面進(jìn)入正題,開始想通過以寫文件的形式設(shè)置,通過在配置文件中直接追加一行即可。但是讀寫文件難免有點(diǎn)繁瑣,再比如:設(shè)置任務(wù)時(shí)要檢查任務(wù)是否已經(jīng)存在;根據(jù)輸入?yún)?shù)設(shè)置相應(yīng)的任務(wù)等。以讀寫文件難免不太合適。所以想到了“萬(wàn)能”的大python。
當(dāng)當(dāng)當(dāng),今天的主角上場(chǎ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í)行周期,每?jī)煞昼妶?zhí)行一次 job.setall('*/2 * * * *') # 當(dāng)然還支持其他更人性化的設(shè)置方式,簡(jiǎn)單列舉一些 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)) # 同時(shí)可以給任務(wù)設(shè)置comment,這樣就可以根據(jù)comment查詢,很方便 job.set_comment("time log job") # 根據(jù)comment查詢,當(dāng)時(shí)返回值是一個(gè)生成器對(duì)象,不能直接根據(jù)返回值判斷任務(wù)是否#存在,如果只是判斷任務(wù)是否存在,可直接遍歷my_user_cron.crons iter = my_user_cron.find_comment('time log job') # 同時(shí)還支持根據(jù)command和執(zhí)行周期查找,基本類似,不再列舉 # 任務(wù)的disable和enable, 默認(rèn)enable job.enable(False) job.enable() # 最后將crontab寫入配置文件 my_user_cron.write()
下面可通過命令查看,是否創(chuàng)建成功:
$ crontab -l
很方便吧,還有一些功能沒有完全介紹,大家可以參考官方文檔https://pypi.python.org/pypi/python-crontab
更多關(guān)于使用python crontab設(shè)置linux定時(shí)任務(wù)請(qǐng)關(guān)注PHP中文網(wǎng)(ipnx.cn)其他文章!