• shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗


    1.简介

    看门狗的作用是定期检测服务正常运行,如果发现服务不在了,会重新拉起服务;linux中可以利用系统的定时任务功能crontab定期的去执行watchdog.sh脚本,而watchdog.sh脚本中则是通过查看服务的状态,在查找结果字符串中用grep命令去检索是否有running字符串,来判断服务是否正在运行;如果没有,则拉起服务;实现看门狗的功能;

     ls -al 1> list.txt 2> /dev/null
    2表示控制台的错误信息,/dev/null表示垃圾黑洞,相当于垃圾箱,2> /dev/null则表示将错误信息丢弃,不显示;将显示的数据;

    2.crontab命令选项

         -u指定一个用户

         -l列出某个用户的任务计划

         -r删除某个用户的任务

         -e编辑某个用户的任务,相当于打开了/etc/crontab 文件,可以在里面添加任务;

      crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 
      crontab -l //列出某个用户cron服务的详细内容
      crontab -r //删除没个用户的cron服务
      crontab -e //编辑某个用户的cron服务
      比如说root查看自己的cron设置:crontab -u root -l
      再例如,root想删除fred的cron设置:crontab -u fred -r
      在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

    3.定时任务的格式

    每一行代表一个定时任务,每一个定时任务前面有5个参数,参数的含义和范围如下,5个参数构成定时任务的循环周期;command是要执行的定时任务,例如执行看门狗脚本任务 sh watchdog.sh

          分     小时    日       月       星期     命令

          0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

         记住几个特殊符号的含义:

             “*”代表取值范围内的数字,          “/”代表”每”,          “-”代表从某个数字到某个数字,          “,”分开几个离散的数字

    实例:

      30     3     10,20     *     *     ls     每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

        25     8-11 *           *     *     ls       每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

        */15   *       *           *     *     ls         每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

         30   6     */10         *     *     ls       每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

        50   7       *             *     *     root     run-parts     /etc/cron.daily  每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件  [ 注:run-parts参数表示,执行后面目录中的        所有可执行文件。

     

     

    4.用shell脚本添加定时任务

    #! /bin/sh

    #创建文件 2表示控制台的错误信息,/dev/null表示垃圾黑洞,相当于垃圾箱,2> /dev/null则表示将错误信息丢弃,不显示;将显示的数据;
    mkdir -p /home/apps/components/ 2>/dev/null

    #复制通目录下的watchdog.sh 到文件夹下
    cp ./watchdog.sh /home/apps/components/

    #创建定时任务变量
    CRONTAB_CMD="* * * * * sh /home/apps/components/watchdog.sh
    * * * * * sleep 10;sh /home/apps/components/watchdog.sh
    * * * * * sleep 20;sh /home/apps/components/watchdog.sh
    * * * * * sleep 30;sh /home/apps/components/watchdog.sh
    * * * * * sleep 40;sh /home/apps/components/watchdog.sh
    * * * * * sleep 50;sh /home/apps/components/watchdog.sh"

    #crontab -l(列出所有的定时任务),2>/dev/null(错误信息丢掉),grep -Fv /home/apps/components/watchdog.sh过滤掉含有/home/apps/components/watchdog.sh的行,"$CRONTAB_CMD"将变量的值输出到控制台,和之前过滤后的数据整合到到一起,过滤的作用是避免重复;crontab -是将数据吸入crontab文件中;命令中的|是管道的意思,是将前一条命令中的数据输入到后一条命令;
    (crontab -l 2>/dev/null | grep -Fv /home/apps/components/watchdog.sh; echo "$CRONTAB_CMD") | crontab -

     

    5.watchdod.sh脚本文件内容

    #!/bin/bash

    #获取时间

    now=`date '+%Y-%m-%d %H:%M:%S'`

    baseDir=$(cd `dirname $0`; pwd)

    #定义sleep的时间为1秒

    sleepTime=1

    #建立要维护的服务数组,数组内是服务的名称;

    array=("delete" "dffkjafk" )

    #输出时间

    echo $now

    #for循环数组中的服务名称

    for pname in ${array[@]}   

    do   

    if [[ ! -z $pname ]]; then    

    #每个服务在系统路径/etc/init.d下都会有个执行脚本文件,以服务的名称命名,通过status命令来查看状态,然后将查询的星星进行过滤找出有running的行,过滤掉grep的信息,wc -l是计算行数;如果有一行,说明正在运行;

        ret=`/etc/init.d/$pname status | grep "running" | grep -v grep | wc -l`     

       if [ $ret -eq 0 ]; then    

           echo "$pname process not exists ,restart process now... "   

    #如果没有,则表示服务挂了,要重新启动

         /etc/init.d/$pname restart    

        echo "$pname restart done ....."    

        else        

       echo "$pname process exists , sleep $sleepTime seconds "    

        fi     

       sleep $sleepTime 

         else  

         echo 126

       fi done;

     

     

    自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;

    (1)   个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;

    (2)   大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。

    (3)   股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;

    下载地址:

    1.0.3版本(修复大盘指数崩溃缺陷)下载地址:

    链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h

    更新链接:

    https://www.cnblogs.com/bclshuai/p/10621613.html

  • 相关阅读:
    Day3----《Pattern Recognition and Machine Learning》Christopher M. Bishop
    Day2----《Pattern Recognition and Machine Learning》Christopher M. Bishop
    学习笔记-----《Pattern Recognition and Machine Learning》Christopher M. Bishop
    “数学之美”笔记
    win10下使用nodejs安装及webstorm创建express项目的指导
    deepin/ubuntu下搭建Jekyll环境
    struts2.3.23升级到struts2.3.32
    struts2.5能不能再恶心点
    线程通信、线程同步以及进城通信的真的搞懂了么
    WINFORM数据库操作,有点像安装里面的SQLITE
  • 原文地址:https://www.cnblogs.com/bclshuai/p/7420353.html
Copyright © 2020-2023  润新知