最近的專案用到了定時執行的一些東西,但沒有用到linux裡面的功能,所以自己寫了乙個按時執行的排程程式
# /bin/bash# whilerun.
sh# writeby xingming on 2023年6月29日12:
55:49
# 常駐記憶體,迴圈執行指令碼檔案
# 各引數含義介紹:
# $1
為程式執行語句,將函式執行的引數等用引號引起來傳程序式
# $2
為待執行程式間隔執行時間,例 d1h2m3s4 代表一天兩個小時三分鐘四秒時間執行一次程式,dhms先後無關
# $3
為開始執行待執行程式的日期
# $4
為開始執行待執行程式的時間
# 如果$
3 $4
不傳遞,程式預設從現在當前時間開始執行
# 執行案例如:bash whilerun.sh"
bash test.sh
" s20h1 20130629
140000
# 解釋:從2023年6月29日14時開始,間隔時間為1小時20秒,執行程式test.
sh# 如需後台執行,參考:bash -c "
(bash whilerun.sh \"bash test.sh\" s10) &
" > /dev/null
if [ $# -lt 1 ] ; then
echo
'# 各引數含義介紹:
# $1
為程式執行語句,將函式執行的引數等用引號引起來傳程序式
# $2
為待執行程式間隔執行時間,例 d1h2m3s4 代表一天兩個小時三分鐘四秒時間執行一次程式,dhms先後無關
# $3
為開始執行待執行程式的日期
# $4
為開始執行待執行程式的時間
# 如果$
3 $4
不傳遞,程式預設從現在當前時間開始執行
# 執行案例如:bash whilerun.sh"
bash test.sh
" s20h1 20130629
140000
# 解釋:從2023年6月29日14時開始,間隔時間為1小時20秒,執行程式test.
sh# 如需後台執行,參考:bash -c "
(bash whilerun.sh \"bash test.sh\" s10) &
" > /dev/null
'exit
fi# 獲取每次執行的間隔時間
timestep=`echo $2 | awk
'
if(match($0,"
[mm][0-9]+"))
if(match($0,"
[hh][0-9]+"))
if(match($0,"
[dd][0-9]+"))
print timespan;
}}'`if [ $timestep -eq -1 ] ; then
echo
'$2:
'$2echo
'$2 引數輸入錯誤,無法解析
'exit
fi# 獲取開始執行的時間
if [ $# -ge 3 ] ; then
dayspan=`date +%s -d $3
2> /dev/null
`
if [ "
v"$dayspan == "
v" ] ; then
echo
'$3 錯誤的輸入!
'"請輸入正確的開始執行日期:$3
"exit
fitimespan=`echo $4 | awk''
`if [ $timespan -eq -1 ] ; then
echo
'$4 錯誤的輸入!'""
exit
fi((runtime=$dayspan+$timespan))
else
runtime=$
fisleeptime=`echo
"($timestep/60)+1
" |bc`
echo
"間隔執行程式時間為timestep :$ s
"echo
"開始執行程式時間為runtime :$ s(`echo $runtime | awk ''`)
"echo
"檢查執行時間間隔為sleeptime:$ s
"# 如果開始執行時間在很久之前,需要將runtime變為當前時間之後
while [ 0$runtime -lt `date +%s` ] ; do
((runtime=$runtime+timestep))
done
# 開始執行while迴圈,檢查程式執行時間
while [ true ] ; do
# 如果當前時間沒有到達程式的執行時間,進入sleep狀態
while [ 0$runtime -gt `date +%s` ] ; do
sleep
$sleeptime
done
# 在此處執行程式
echo
"當前時間為:`date +
"%y-%m-%d %h:%m:%s"
`;開始執行程式"$
1((runtime=$runtime+$timestep))
done
# 如果程式正常執行,此處無法執行到
exit
指令碼的使用和功能基本上在程式裡面都有闡述,不必多言,留在這裡,以後參考!
3 定時任務指令碼
2.用於linux的定時任務指令碼 附一 kitchen與pan的使用 參考文獻 rem 轉到kitchen命令所在的資料夾下 cd d e etlsoftware kettle data integration kitchen.bat file d job manage projectjop.kj...
Shell指令碼 定時任務
yum install vixie cron yum install crontabsservice crond start 啟動服務用以下的方法啟動 關閉這個cron服務 service crond start 啟動服務 service crond stop 關閉服務 service crond ...
2定時任務指令碼 利用指令碼 定時任務進行監控
root 98 server scripts vim etc mail.rc set bsdcompat set from sff5030 163.com 發件人 set smtp smtp.163.com set smtp auth login set smtp auth user sff5030...