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 ...
随机推荐
- 10 Django之Ajax请求
一.什么是Ajax技术? 异步的JavaScript和XML.使用Javascript语言与服务器进行异步交互,传输的数据为XML(更多的使用json数据).Ajax不是一门新的编程语言,而是一种使用 ...
- HLSL中constant variables的packing规则
HLSL中constant variables的packing规则 参考MSDN上的官方文档.一般而言,HLSL将数据打包为4字节对齐,此外,它不允许数据跨16字节(即4个float的vector)的 ...
- Innodb、MYISAM的文件存储结构
MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQLserver所创建的数据库文件和MySQL所用存储引擎创建的数据库文件. 查看MySql数据库物理文件存 ...
- 帝国cms列表内容模板加上数字编号
/*这个[!--no.num--]指的是信息编号.每次增加1*/ <li data-eq="[!--no.num--]"> <div class="ti ...
- 快递100API
url:http://www.kuaidi100.com/query 拼接参数: 参数名称 参数取值 参数类型 type 快递码,请参考快递100码 String postid 快递单号 String ...
- vue项目使用qrcodejs2生成二维码
最近写项目遇到一个需求,根据后台给的地址生成二维码,在网上找了下,qrcodejs2使用还是比较多,试了下也能实现需求,就整理下使用方法,方便以后使用 1. 安装包 cnpm i qrcodejs ...
- 解决GitHub下载资源慢的问题
打开 C:\Windows\System32\drivers\etc\hosts 添加 # GitHub 解决下载速度慢的问题 192.30.253.113 github.com 151.101.18 ...
- vue中优化CheckBox初始状态被选中问题
<template> <div class="hello"> <h2>我是主界面</h2> <!-- <h2>我是 ...
- 保证在浏览器上word/图片/Excel的下载的表现形式一样
function downloadImage(src) { console.log(src); //src="http://192.168.12.50:8181/file/common/pn ...
- JavaJDBC【四、存储过程的使用】
Mysql还没学到存储过程,不过语法比较简单 此处不深究数据库中的存储过程怎么创建,后面在mysql的学习笔记里再做整理 今天只整理java中如何调用存储过程 语句 CallableStatement ...