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

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

 #!/bin/sh

 #Section configuration(配置部分)
 #Task Time ,example:(Time ::);(Time ::);
 startTime=
 #the programs you want to execute(要执行的程序)
 program=ps

 #Section promgram (程序执行部分)
 perDate=$(date "+%Y%m%d")
 isNewDay=
 isFirstTime=

 echo 'Task schedule Time: ('$startTime') program: ('$program') Waiting...'

 while true ; do
     curTime=$(date "+%H%M%S")
     curDate=$(date "+%Y%m%d")

     #Check week day(周末不执行)
     week=`date +%w`
      ] || [ $week -eq  ];then
         isNewDay=

         continue

     else
         #check and run script(工作日执行)
         " ];then
             if [ "$curTime" -gt "$startTime" ];then
                 " ];then
                     echo 'The program ('$program') Running...'
                     $program
                     echo 'The program ('$program') Stopped...'
                 fi
                 isNewDay=
             else
                 " ];then
                     echo 'New Day: ('$curDate') Task schedule Time: ('$startTime') Waiting...'
                     isFirstTime=
                 fi

             fi
         else
             #new day start(开始新的一天)
             if [ "$curDate" -gt "$perDate" ];then
                 echo 'New Day: ('$curDate') Task schedule Time: ('$startTime') Waiting...'
                 isNewDay=
                 perDate=$curDate
             fi
         fi

     fi
 done

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

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

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

  原文地址:http://ju.outofmemory.cn/entry/2058

Shell脚本实现每个工作日定时执行指定程序的更多相关文章

  1. VBA定时执行某程序

    OnTime 方法参阅应用于示例特性安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后). expression.OnTime(EarliestTime, Pro ...

  2. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  3. 实用脚本 2 -- Linux下定时执行脚本

    今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...

  4. 170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法

    今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式 ...

  5. 解决命令行执行shell脚本成功,但crontab执行失败

    实际生产案例 生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号 会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP) #! ...

  6. shell脚本中多命令单行执行_转

    多命令一起执行 如果希望把几个命令合在一起执行, shell提供了两种方法.既可以在当前shell也可以在子shell中执行一组命令. 对{}和()而言, 括号中的重定向符只影响该条命令, 而括号外的 ...

  7. shell脚本的if语句,判断某程序是否存在,不存在启动该程序!

    想必大家都知道 "如果......那么......" 这种语法的应用吧! 当然呢,linux下对于这种用法也是有所考虑的,很多时候我们都需要写一个shell脚本,难免会避免if语句 ...

  8. shell脚本—根据文件个数定时备份

    最近在了解Jenkins时,出现这样一个问题:linux ext3系统目录下的子目录个数不能超过31998个(参考:http://www.xshell.net/linux/1267.html),但je ...

  9. shell脚本中切换用户并执行命令

    1.切换用户并执行命令 su 用户名 -c "命令" 2.切换用户并执行脚本 su 用户名 -s /bin/bash 脚本路径 3.切换用户并执行命令集su 用户名 << ...

随机推荐

  1. [工具] Dienstag

    Dienstag 是一款专门用来进行团队排班的应用,无论是正常班.倒班,只需要几分钟就能生成一目了然的排班表,能够显示休假与缺勤.职务以及详尽的统计功能,并且能将排班情况导入系统日历.@Appinn ...

  2. oracle的日期相减

    oracle的日期相减 : 两个date类型的 日期相减,得到的是天数,可能是带小数点的.如下:

  3. iOS - 引用计数探讨

    <Objective-C 高级编程> 这本书有三个章节,我针对每一章节进行总结并加上适当的扩展分享给大家.可以从下面这张图来看一下这三篇的整体结构: 注意,这个结构并不和书中的结构一致,而 ...

  4. 交换机多VLAN访问同一网络

    一.前言 经常有需求通过交换机改变IP地址或者实现在同一个交换机中建立多个VLAN访问外部网络(VLAN之间独立),在折腾了多次后,稍有心得,现记录之. 二.实现方案 何为VLAN就不在此赘述.实现起 ...

  5. Elasticsearch 不同的搜索类型之间的区别

    1.match   轻量级搜索 GET /wymlib/_search { "query": { "match": {  "title": ...

  6. Git 使用篇一:初步使用GitHub,下载安装git,并上传项目

    首先在MAC上怎么操作. 在gitHub创立一个账户,在创立一个项目,这就不用我说了对吧. 创建完之后是这样的: 接下来,我们打开https://brew.sh 这是下载homebrew的网站,hom ...

  7. 注意:darknet安装

    参考:https://github.com/AlexeyAB/darknet # 一.安装 ## linux下安装 - 在darknet目录下执行make ## windows下安装 1. 安装vs2 ...

  8. MySQL在linux上的source code安装方法(configure)

    1.建立操作系统用户和组 [root@faspdev ~]# groupadd mysql [root@faspdev ~]# useradd -g mysql mysql 2.解压安装文件,进入解压 ...

  9. MySQL命令:创建数据库、插入数据

    简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 打开MySQL 服务并使用 root 登录: --打开 MySQL 服务 sudo service mysql ...

  10. http_build_query

    http_build_query (PHP 5) http_build_query -- 生成 url-encoded 之后的请求字符串描述string http_build_query ( arra ...