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 ...
随机推荐
- X-Router软路由设置
一 内网: ip 192.168.0.1 掩码 255.255.255.0 网关 (空) DNS 202.96.128.68(佛山的)手动写入 二 外 ...
- Linux Too many open files
Linux Too many open files 查看系统资源限制信息: sudo -s -u root -H id sudo -s lsof | awk '{ print $2 " &q ...
- Java是面向对象的编程语言。它不仅吸收了C++语言的优点
Java是面向对象的编程语言.它不仅吸收了C++语言的优点,而且摒弃了C++中难于理解的多继承和指针的概念.因此,Java语言具有功能强大.使用方便的特点.Java语言作为静态面向对象的编程语言的代表 ...
- Sql Server 导出数据库表结构的SQL查询语句
--导出数据库所有表 SELECT 表名 Then D.name Else '' End, 表说明 Then isnull(F.value,'') Else '' End, 字段序号 = A.colo ...
- centos7andcentos6初始化脚本
#!/bin/bash # get OS verison RELEASEVER=$(rpm -q --qf "%{Version}" $(rpm -q --whatprovides ...
- Python之if-else语句
if--else语句if username == 'admin' and password == '123456': print('身份验证成功!') else: print('身份验证失败!')if ...
- windows 下 node 入门
node js node -v npm -v nvm v nvm list npm install * -g npm install express -g npm install -g expres ...
- Oracle笔记(二) SQLPlus命令
对于Oracle数据库操作主要使用的是命令行方式,而所有的命令都使用sqlplus完成,对于sqlplus有两种形式. 一种是dos风格的sqlplus:sqlplus.exe; 另一种是window ...
- java-集合学习-底层实现
集合分为两大类: Collection集合: 单个存储 Map集合: 按<键,值>对的形式存储, <员工姓名,工资> Collection类关系图 Collection常见方 ...
- 第十五届四川省省赛 SCU - 4444 Travel
给你一个一共由两种边的完全图 要求你求1到N的最短路 q队列为前沿队列(已探索过且最外围的点) p队列为未探索队列(未探索过的点) depth这个数组的用法并不是代表实际上这个点在第几层 而是防止死 ...