最简单的shell监控脚本 结合定时任务 2019-02-26

    例如我用thinkphp 写了个命令,假设这条命令是 php think rmCache &

    这条命令就是跑脚本删除缓存的,执行这条命令就挂起一个php进程,这个进程接收到rabbitMQ消息时才清理缓存。

    那如果清理过程中碰到问题挂了怎么办?我们怎么让他重新启动?

    1. 首先挂了得解决挂了的问题,例如把日志输出到到文件,在排查。这点我们先忽略

    2. 如何让他重新启动?如果错误了,跳出循环直接导致整个进程都断了,那么我们就需要用shell脚本来监控这个进程是否存在。不存在则把它拉起来执行



    首先我们写个sh脚本

    #  cd /usr/src

    # vim monitorRmCache.sh


    在脚本输入以下内容

    第一行:生命

    第二行:统计rmCache进程的数量

    第三行判断进程数是否为0

    第四行 进入项目

    第五行启动 php执行thinkphp封装的命令

    第六行判断结束


    #! /bin/bash

    count=`ps -ef |grep rmCache  | grep -v "grep"|wc -l`

    if [ $count == 0 ];then

        cd /www/tp5

        php /tp5/think 

    fi



    退出编辑

    #wq


    支持监控脚本写好了。

    脚本写好了给他个执行权限 chmod +x monitorRmCache.sh


    然后我们进入crontab


    #crontab -e


    输入以下配置

    */1 * * * * /usr/src/monitorRmCache.sh


    :wq


    crontab就是linux的定时任务。第一位是分钟,第二位是时 以此类推为 分 时 日 月 周

    */1 就是每分钟, 如果第一位填1 则是 每小时的第一分钟。

    第六位则crontab 要执行的东西

    其他配置同理 例如我们要配置每月的1号 21点30分 

    那么久配置 

    30 21 1 * *  /usr/src/monitorRmCache.sh


    这样就是 1号 的21点 30分来执行这条定时命令



    OK,至此结束。