两种解决方案:个人推荐第二种,使用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可以参考我其它博客。