1. 程式人生 > 其它 >Python程式設計之定時任務(crontab)詳解

Python程式設計之定時任務(crontab)詳解

引言

 python-crontab是python模組,提供了對cron任務的訪問,並使得我們可以通過python對crontab檔案進行修改。

安裝

pip install python-crontab

注意:如果在使用CronTab的時候報錯,報錯資訊為 got an unexpected keyword argument 'user' 可能是庫安裝錯了,應該安裝python-crontab而不是crontab。

使用案例

  • 增加crontab任務,一般有兩種方式
from crontab import CronTab

# 方法一

# 建立cron訪問
cron = CronTab(user='
root') # 增加新作業 job = cron.new(command='echo hello_world') # 每一分鐘執行一次 job.minute.every(1) # 寫入作業 cron.write() # 方法二 with CronTab(user='root') as cron: job = cron.new(command='echo hello_world') job.minute.every(1) print('cron.write() was just executed')
  • 訪問crontab可以通過五種方式實現
from crontab import
CronTab # 下述三種方法只能在Unix上使用 # 不會從任何使用者載入任何內容 empty_cron = CronTab() # 從當前使用者載入 my_user_cron = CronTab(user=True) # 從$username載入 users_cron = CronTab(user='username') # 可適用於window # 從檔案中載入 file_cron = CronTab(tabfile='filename.tab') # 使用字串變數作為crontab mem_cron = CronTab(tab="""* * * * * command
""")
  • 設定作業時間
from crontab import CronTab


cron = CronTab(user=True)

job = cron.new(command='echo hello world')


# 每兩分鐘執行一次
job.minute.every(2) # Set to */2 * * * *

# 每兩小時執行一次
job.hour.every(2)    # Set to * */2 * * *

# 每兩天執行一次
job.day.every(2)     # Set to * * */2 * *

# 每天的早上2點執行
job.hour.on(2)        # Set to * 2 * * *

# 每週日執行
job.dow.on('SUN') 

# 每週日、週五執行
job.dow.on('SUN', 'FRI')

# 四月到11月期間執行
job.month.during('APR', 'NOV')

# 每兩個月的2號到4號的早上10:02執行
job.setall(2, 10, '2-4', '*/2', None)  # Set to 2 10 2-4 */2 *
  •  刪除crontab任務
# 刪除一個任務

cron.remove(job)


# 刪除多個任務

cron.remove_all(comment='LoveFishO')

cron.remove_all('echo')

cron.remove_all()
  • 獲取修改任務的命令或註釋
# 獲取任務的命令或註釋

command = job.command
comment = job.comment

# 修改任務的命令或註釋

job.set_command("echo LoveFishO")
job.set_comment("LoveFishO")
  • 寫入任務
# 把任務寫入系統
cron.write()

# 把任務寫入檔案
cron.write( 'filename.tab' )

# 把任務寫入當前使用者的定時任務中
cron.write_to_user(user=True)

# 把任務寫入特定使用者的定時任務中
cron.write_to_user(user='LoveFishO')

Reference

python-crontab官方文件