我们可能会遇到这样的情景:必须在每个工作日定时执行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脚本实现每个工作日定时执行指定程序

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

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

转载于:https://www.cnblogs.com/shujuxiong/p/9023254.html

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

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

    我们可能会遇到这样的情景:必须在每个工作日定时执行 原理很简单,Shell脚本内部每隔1秒查询一次当前时间.日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间cur ...

  2. python、中循环功能可通过什么命令实现_python定时执行指定函数的方法 Python如何定时循环执行命令?...

    python中如何定时执行某一个函数 = =怎么连接..先调用注册函数 然后调用登录函数就行.顺序执行.至于如果你说注册失败不进行登录的话 直接在注册函数里面处理 注册失败 return def si ...

  3. nohup执行的jar 怎么kill_使用Shell脚本如何启动/停止Java的jar程序

    本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分.另外,补充一些后台运行的小知识. 启动脚本:start_upload.sh #!/bin/sh nohu ...

  4. 【Linux】Shell脚本中的多任务并发执行

    Shell脚本中的多任务并发执行 需求 实现一个脚本能够使用ping检测网络的连通性 可以同时检测多个IP地址, 并且将检测结果输出 分析 正常情况下,Shell脚本中的命令是串行执行的,当一条命令执 ...

  5. Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站

    Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站 原创文章.码字不易,转载请注明出处和链接,谢谢! 1.环境保障 自己利用scrapy编写的智联招聘网站"大数据 ...

  6. 2021-01-21 linux shell脚本实现间隔一定时间执行一次任务

    shell脚本实现间隔一定时间执行一次任务 1.编写shell脚本 while [ true ]; do sleep 20 bash test.sh >> /tmp/date.txt do ...

  7. java源码如何启动脚本_使用Shell脚本如何启动/停止Java的jar程序

    本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分.另外,补充一些后台运行的小知识. 启动脚本:start_upload.sh #!/bin/sh nohu ...

  8. windows设置任务计划定时执行php程序,两种方法

    windows设置任务计划定时执行php程序,两种方法 1.定时执行bat文件 2.定时执行php文件 1.定时执行bat文件 新建一个php文件 :在php文件写入你要执行的程序: <?php ...

  9. 定时打开指定程序软件

    由于最近工作中经常用到定时执行一些程序,以前都是用计划任务,但是想想何不自己开发一个定时执行程序的小软件呢,用了一晚上的功夫开发完成,功能比较简单.可以定时执行多个程序.可以支持开机自启动.设定好之后 ...

最新文章

  1. Delphi和C++数据类型对照表
  2. ElementUI的DateTimePicker组件添加验证规则以及限制选择范围
  3. 第四百一十七天 how can I 坚持
  4. 自动undo管理下如何添加和删除回滚段
  5. windows 安装ipython
  6. 【Java入门】package包
  7. TypeScript和JavaScript哪种语言更先进
  8. C语言实例:3个数从小到大排序
  9. 剑指Offer04. 二维数组中的查找
  10. python神经网络作用_Python · 神经网络(三*)· 网络
  11. 劳动节快乐 | 5月1日 星期六 | 喜马拉雅赴美递交IPO招股书;拼多多年活跃买家7.884亿;抖音电商开启“抖音55潮购季”
  12. 在线内存泄露定位--memleak工具
  13. Learning Shape Priors for Single-View 3D Completion and Reconstruction
  14. 用户数据报协议是啥?看完这文就懂了!| 技术头条
  15. 基于深度学习的自然场景文字检测及端到端的OCR中文文字识别
  16. 十分钟学会Java RMI
  17. python自动化读取和写入文件_基于Python的接口自动化读写excel文件的方法
  18. 使用Crash工具查看一个TCP listen sock内存布局实例
  19. 夜间灯光数据dn值_一种基于NDBI的城市夜间灯光数据去饱和方法与流程
  20. 【工作日记18】渗透测试之xml注入攻击、CRLF漏洞

热门文章

  1. ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)
  2. NLP 《分词方法》
  3. 每天进步一点点《ML - K-means》
  4. PRML-系列二之2.2
  5. python 封装函数_python:函数数据封装
  6. TensorFlow2.0 —— 模型保存与加载
  7. 吴恩达深度学习 —— 3.6 激活函数
  8. 删除顺序表中重复元素,并按照原序输出
  9. QT Basic 014 Model/View programming (模型、视图编程)
  10. 公众号里面套页面_微信公众号页面模板有什么用?开通的方法是什么?