zoukankan      html  css  js  c++  java
  • Shell脚本实现每个工作日定时执行指定程序

    我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序。那么有没有办法实现这一功能呢?答案是肯定的。我们可以运用Shell脚本简单实现这一功能。     

    原理很简单,Shell脚本内部每隔1秒查询一次当前时间、日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间curTime大于指定时间startTime时,执行指定的程序program。为了保证每天仅执行一次指定程序program,还引用了变量isFirstTime做标记。具体代码如下:

    1. #!/bin/sh  
    2.   
    3. #Section configuration(配置部分)  
    4. #Task Time ,example:203000(Time 20:30:00);190000(Time 19:00:00);  
    5. startTime=113200  
    6. #the programs you want to execute(要执行的程序)  
    7. program=ps  
    8.   
    9. #Section promgram (程序执行部分)  
    10. perDate=$(date "+%Y%m%d")  
    11. isNewDay=1  
    12. isFirstTime=1  
    13.   
    14. echo 'Task schedule Time: ('$startTime') program: ('$program') Waiting...'  
    15.   
    16. while true ; do  
    17.     curTime=$(date "+%H%M%S")  
    18.     curDate=$(date "+%Y%m%d")  
    19.   
    20.     #Check week day(周末不执行)  
    21.     week=`date +%w`  
    22.     if [ $week -eq 6 ] || [ $week -eq 0 ];then  
    23.         isNewDay=0  
    24.         sleep 1  
    25.         continue  
    26.   
    27.     else  
    28.         #check and run script(工作日执行)  
    29.         if [ "$isNewDay" -eq "1" ];then  
    30.             if [ "$curTime" -gt "$startTime" ];then  
    31.                 if [ "$isFirstTime" -eq "0" ];then  
    32.                     echo 'The program ('$program') Running...'  
    33.                     $program  
    34.                     echo 'The program ('$program') Stopped...'  
    35.                 fi  
    36.                 isNewDay=0  
    37.             else  
    38.                 if [ "$isFirstTime" -eq "1" ];then  
    39.                     echo 'New Day: ('$curDate') Task schedule Time: ('$startTime') Waiting...'  
    40.                     isFirstTime=0  
    41.                 fi  
    42.   
    43.             fi  
    44.         else  
    45.             #new day start(开始新的一天)  
    46.             if [ "$curDate" -gt "$perDate" ];then  
    47.                 echo 'New Day: ('$curDate') Task schedule Time: ('$startTime') Waiting...'  
    48.                 isNewDay=1  
    49.                 perDate=$curDate  
    50.             fi  
    51.         fi  
    52.         sleep 1  
    53.     fi  
    54. done  

    该Shell脚本的功能为每个工作日的11点32分执行一次ps命令,执行的效果如下图所示。

    Shell脚本实现每个工作日定时执行指定程序

    Shell脚本实现每个工作日定时执行指定程序

    当然该脚本只是为了演示这一定时原理,实际应用中可以指定其他的程序或者脚本,并利用nohup命令让其后台运行。

  • 相关阅读:
    集成信鸽推送!!!
    URI跳转方式地图导航的代码实践
    CocoaPods 的详细使用教程
    学习如何学习
    代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
    宏!!!!(拷贝别人的博客的只为了收藏)
    不修改Xcode项目加载Reveal
    关于开发中的常用手段(个人建议)
    ios高级-属性中Copy的使用
    iOS高级-RunLooper
  • 原文地址:https://www.cnblogs.com/dongxiaoguang/p/2956399.html
Copyright © 2011-2022 走看看