anacron實現異步定時任務調度

Anacron是什麼

衆所周知,cron是*nix系統下的一種定時任務調度器,可以實現任意用戶週期性運行特定任務的需要,常用在自動維護和管理中。而anacron是一種異步的定時任務調度器,大家都知道cron是Linux系統下的定時任務調度器,可以實現異步的任務調度。對於24小時開機運行的服務器可能用不到這種東西,但是非24小時開機,又想定時運行任務的機器還是十分有用的,可以實現異步的調用。

目前很多發行版中的cron是由cronie實現的,而cronie中集成了anacron。

Anacron配置

anacron的配置與cron類似,也是要首先配置一個叫anacrontab的文件,其文件格式說明一般在manual裏有man anacrontab

  • 可以定義啓動程序的環境變量,其中
    • START_HOURS_RANGE=17-23:表示程序在17時至23時之間會啓動
    • RANDOM_DELAY=5:表示定時觸發後隨機延遲5分鐘以內的時間再啓動應用(主要是防止一開機多任務同時啓動造成負載過重)。
  • 任務定義的格式:
    • 1 5 crawl $HOME/bin/mycrawl:第一列表示格幾個小時啓動一次,第二列表示觸發後延遲的分鐘數,最終的延遲時間是5+RANDOM_DELAY,第三列是任務名稱,第四列是要運行的命令及相關的參數。

一個完整的配置文件如下:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
RANDOM_DELAY=10
START_HOURS_RANGE=17-23
1   5   crawl   $HOME/bin/mycrawl

將上述文件存儲爲$HOME/anacrontab,然後運行:

$ anacrontab -t anacronta -S ~/.anacron

運行完後過幾分鐘,crawl任務便會啓動。其中-t參數是指定anacrontab文件,-S參數是指定anacron的緩存路徑,這個路徑必需是已經建立好的一個目錄。

Anacron的實現原理以及使用方式

Anacron是基於cron的,並沒有要代替cron,一般的用法是由cron在週期性調用anacron,利用anacron定義的規則來啓動相關的應用。比如系統中在/etc/cron.hourly下一般會有一個0anacron的文件,此文件用於啓動/etc/anacrontab中定義的任務。如果要實現異步的週期性任務,還需要再定義相應的crontab。

運行crontab -e,並寫下按小時調用的規則:

15 * * * * anacrontab -t $HOME/anacrontab -S $HOME/.anacron

每次調用anacrontab時,會監測一下$HOME/.anacron目錄下crawl(任務名稱)文件是否存在並且其內容是否爲當前今天的日期,如果是今天的日期,則表明今天已經調用過了,如果不是今天的日期,則啓動$HOME/bin/mycrawl程序,再把內容改爲今天的日期。以這種方式實現了即使關機的情況下也會定期運行相關的任務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章