python crontab設置linux定時任務


熟悉linux的朋友應該知道在linux中可以使用crontab設置定時任務。可以通過命令crontab -e編寫任務。當然也可以直接寫配置文件設置任務。

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

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

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

pip install python-crontab

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

from crontab import CronTab

# 創建linux系統當前用戶的crontab,當然也可以創建其他用戶的,但得有足夠權限,如:user='root'
my_user_cron = CronTab(user=True)

# 創建任務 指明運行python腳本的命令(crontab的默認執行路徑為:當前用戶的根路徑, 因此需要指定絕對路徑)
job = my_user_cron.new(
from crontab import CronTab

# 創建linux系統當前用戶的crontab,當然也可以創建其他用戶的,但得有足夠權限,如:user='root'
my_user_cron = CronTab(user=True)

# 創建任務 指明運行python腳本的命令(crontab的默認執行路徑為:當前用戶的根路徑, 因此需要指定絕對路徑)
# 命令最好都寫絕對路徑,腳本的用戶變量和系統變量是不一樣的,不一定你能招到那個命令,比如書喲這個python3
job = my_user_cron.new(
    command='/usr/local/python3/bin/python3 /root/data_test.py >> /root/data_result.log 2>&1 &')

# 設置任務執行周期,每兩分鍾執行一次(更多方式請稍后參見參考鏈接)
job.setall('*/1 * * * *')

# 將crontab寫入linux系統配置文件
my_user_cron.write()

# 設置任務執行周期,每兩分鍾執行一次(更多方式請稍后參見參考鏈接)
job.setall('*/1 * * * *')

# 將crontab寫入linux系統配置文件
my_user_cron.write()

 

 

還有一些其他的參數和配置

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM