兩種解決方案:個人推薦第二種,使用crontab來定時執行任務
1.shell代碼如下:
nohup command &. 解釋: 后台永久運行command命令。
(nohup表示后台永遠執行,不隨終端退出而終止。&表示后台運行,隨着終端退出程序而終止。兩個一起就是后台永久運行了)
1 #!/bin/bash 2 3 #需要定時執行的程序 4 program=testapp 5 6 #獲取當前時間,例如20171129 <---> perDate=$(date "+%Y%m%d") 7 #獲取一天后的時間 8 afterdata=$(date -d +1day "+%Y%m%d") 9 #afterdata=20170323 10 #每五分鍾僅僅執行一次,設置標志位 11 onceflag=0 12 13 echo 'Task schedule Time: ('$program') program Waiting to run(once per 5min)...' 14 15 #死循環,當檢測到當前時間段分鍾數符合條件,則開始執行程序 16 while true ; do 17 #獲取當前分鍾數, date獲取當前日期,%M來獲取當前分鍾數。 18 presentminutes=$(date "+%M"); 19 20 if [ `expr $presentminutes % 5` -eq 0 ] 21 then 22 if [ $onceflag -eq 0 ] 23 then 24 echo 'Now minute is '$presentminutes'' 25 echo 'The program ('$program') running...' 26 echo $program $afterdata //打印測試可執行程序格式是否正確 27 $program $afterdata 28 echo 'The program ('$program') stopped...' 29 onceflag=1 30 else 31 continue 32 fi 33 else 34 onceflag=0 35 fi 36 37 sleep 1 //一秒查詢一次當前時間點 38 done
2.也可以使用crontab來完成每五分鍾定時執行一次可執行任務。關於crontab可以參考我其它博客。