定時任務指令碼

2022-03-15 05:07:24 字數 2781 閱讀 3898

最近的專案用到了定時執行的一些東西,但沒有用到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...