利用shell指令碼實現計劃任務功能

來源:互聯網
上載者:User

利用shell指令碼實現計劃任務功能 一、mytask 實現功能: 1、多任務並發執行,不會互相影響,採用鎖機制避免單個任務的重疊執行。2、每個任務以單獨指令碼形式儲存,相互獨立。3、支援起始已耗用時間,如"2013/05/08"、"13:30"或“now”。並且支援給起始已耗用時間的修正值,比如"now+5m"表示目前時間的5分鐘後執行(另外還實現了負數修正值,比如-1h,現在覺得這個功能挺無聊的)。4、支援多種類型的運行周期設定,包括秒、分、時、天、周、月、年還有一次性任務。5、會根據任務執行間隔,自動設定休眠時間,主程式佔用資源極小。6、任務可以是SHELL指令碼,也可以是直接的linux命令。7、獨立的任務設定檔,集中定義任務內容、起始時間和運行間隔。(個人感覺比crontab的設定更直觀)8、支援運行時重載任務設定檔,無需重啟主程式就可以將調整後的任務加入計劃。 二、任務設定檔說明: 預設的任務設定檔為主程式目錄下的mytask.conf 每一行配置對應一個計劃任務,配置項之間以逗號分隔,任務配置定義如下:<任務內容>,<起始已耗用時間>,<運行周期> 1、任務內容,可以是指令檔、命令等。要注意寫全檔案或命令的路徑,可以使用全域變數$BASEDIR代表主程式所在目錄。複雜的命令建議儲存在指令檔中。 2、起始已耗用時間分兩部分。第一部分為初始時間,格式為"yyyy/MM/dd hh:mm:ss"也可以是時間值片斷,例如:"2013/03/05"、"03/05"、“03/05 21:30”、"21:30"或目前時間"now"。第二部分為修正時間,格式為"+時間單位"或“-時間單位”,意思為在初始時間的基礎上做進一步的時間修正。例如:"+5s"、"-10m"等。時間的單位區別大小寫,具體定義如下:y=年、M=月、d=日、h=時、m=分、s=秒、w=星期 3、運行周期即為任務函數啟動並執行間隔時間,取值與修正時間類似,只是取消了+-號,如果值為不帶單位的0則表示只運行一次。 任務定義樣本如下:#在淩晨零點開始執行,每隔1天運行一次。$BASEDIR/tasks/backdb.sh,00:00,1d #在目前時間的2分鐘後開始執行,每隔1個月運行一次。$BASEDIR/tasks/test1.sh,now+2m,1M #在5月12日14點30開始執行,每隔1小時運行一次。/home/lykyl/sp.sh,5/12 14:30,1h #在15:50點開始執行,每隔30秒運行一次。$BASEDIR/tasks/test3.sh,15:50,30s #啟動即開始執行,每隔1分鐘運行一次。touch /tmp/ohyeah,now,1m #在目前時間的1小時後開始執行,只運行一次。$BASEDIR/tasks/test5.sh,now+1h,0 三、程式控制命令 1、啟動  nohup ./mytask.sh & 2、退出 kill -15 `cat ./mytask.pid` 3、運行時重新載入任務設定檔 kill -SIGUSR1 `cat ./mytask.pid` 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.