利用shell指令碼實現計劃任務功能
利用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`
相關文章
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- Linux執行shell指令碼完成任務計劃是以秒為單位Linux指令碼
- linux中計劃任務執行指令碼Linux指令碼
- 使用at和cron實現任務計劃
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL
- 實現一個“計劃任務”機制
- 利用shell指令碼統計程式碼行數指令碼
- 利用VB 指令碼實現TIA 中介面迴圈計數的功能指令碼
- 利用SCHEDULER呼叫shell指令碼指令碼
- 計劃任務
- Linux計劃任務crontab執行指令碼不正確的問題Linux指令碼
- mysql計劃任務MySql
- 計劃任務(CRON)
- 計劃任務crontab
- zabbix系列(九)zabbix3.0實現自動觸發zabbix-agent端shell指令碼任務指令碼
- 用DBMS_JOB來實現高階計劃任務
- 【Linux】【Shell】主控指令碼實現Linux指令碼
- shell指令碼實現DNS正向解析指令碼DNS
- centos7.2 利用crontab執行定時計劃任務CentOS
- js利用cookie實現的計數功能程式碼JSCookie
- 利用shell指令碼生成動態sql指令碼SQL
- 指令碼div實現拖放功能指令碼
- Locust 任務指令碼初探指令碼
- shell 指令碼實現的守護程式指令碼
- XP空間――挖掘“任務計劃”的另類功能(轉)
- 【RMAN】RMAN備份恢復1 RMAN冷備指令碼與crontab計劃任務指令碼
- 【RMAN】RMAN備份恢復2 RMAN熱備指令碼與crontab計劃任務指令碼
- 利用SSIS在SQL Azure中執行計劃任務(下)KCSQL
- 利用SSIS在SQL Azure中執行計劃任務(上)DJSQL
- 利用SHELL指令碼實現檔案完整性檢測程式(1.2版更新)指令碼
- crontab+shell 實現每秒執行一個任務
- shell指令碼實現---Zabbix5.0快速部署指令碼
- 【RMAN】RMAN備份恢復3 RMAN增量備份指令碼與crontab計劃任務指令碼
- Linux 任務計劃管理Linux
- ubuntu 設定計劃任務Ubuntu
- 剖析 Laravel 計劃任務--初探Laravel
- Linux 計劃任務整理Linux
- mysql計劃任務:event scheduleMySql