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
shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗的更多相关文章
- 【转帖】Linux定时任务Crontab命令详解
Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...
- Linux定时任务Crontab命令详解_转
转自:Linux定时任务Crontab命令详解 (部分修改) linux 定时系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服 ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
- linux定时任务crontab怎样执行root命令
在/var/spool/cron/文件夹下放置了所有定时任务文件, 1.运行crontab -u $用户名 -e会显示$用户的所有定时任务: 2.运行sudo crontab -e会显示root用户所 ...
- Linux系统crontab定时调度Python脚本
Linux系统crontab定时调度Python脚本 一.Python脚本随Linux开机自动运行 #Python脚本:/home/edgar/auto.py #用root权限编辑以下文件:/etc/ ...
- 使用shell程序备份crontab中的.sh脚本文件
需求 线上环境有一些定时脚本(用crontab -l可查看当前用户的),有时我们可能会改这些定时任务的脚本内容.为避免改错无后悔药,需用shell实现一个程序,定时备份crontab中的.sh脚本文件 ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
- linux定时任务crontab
今天在执行mysql定时任务语句时候问了很多大拿,都建议我不要随便在生产环境下写定时任务这样的语句,有的说会有延时,那样的话就不准了,有的说在.系统时间和本地时间不一致怎么办?后来就建议我用linux ...
随机推荐
- C#等比列放大缩小图片
public Bitmap ChangeImgSize(Image bit, double Multiple) { Bitmap newBitmap ...
- C# List.sort排序(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...
- C 中 char、signed char 和 unsigned char 的区别
C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...
- 【weixin】微信h5支付
一.使用场景 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付. 主要用于触屏版的手机浏览器请求微信支付的场景.可以方便 ...
- Laravel save部分字段失效的bug问题解决
问题描述:今天在编写api的更新部分,发现有部分字段怎么更新都更新不上去. 问题排查: 经过多次测试,发现每次提交只能更新部分字段,字段分别为:id,user_id,device_room_id,na ...
- HBASE学习笔记(五)
一.HBase的RowKey设计原则 1.我们知道HBase是三维有序存储的,通过RowKey(行键),ColumnKey(Column family和qualifier)和TimeStamp(时间戳 ...
- 解决docker pull 速度慢问题
解决docker pull 速度慢问题 将docker镜像源修改为国内的: 在 /etc/docker/daemon.json 文件中添加以下参数(没有该文件则新建): { "registr ...
- 深入学习Mybatis框架(一)- 入门
1.什么是Mybatis? Mybatis是一个优秀持久层框架,提供了对数据库的一系列操作(增删改查).Mybatis可以避免重复的写JDBC代码,让我们以较少的代码实现对数据库的操作,从而提高开发效 ...
- Delphi GetCommModemStatus函数
- git tag 重写
有的时候我们想要在git的master分支中插入一个tag,这个时候就需要我们先删除一个不重要的tag,然后切到我们想要提交内容的地方,重新打tag. 例如:在master分支上修改提交,在commi ...