shell+crontab 实时服务进程监控重启
#!/bin/sh
#filename: checkProcess.sh
#示例:每分钟检测httpd是否在运行,不在运行则重启
#crontab -e
# 加入:*/ * * * * checkProcess.sh "httpd" "/etc/init.d/httpd start"
#-------------------------------
# 函数: checkProcess
# 功能: 检查一个进程是否存在
# 参数: $ --- 要检查的进程名称(可以加入路径,增强唯一性)
# 返回: 如果存在返回1, 否则返回0.
#------------------------------- checkProcess()
{
# 检查输入的参数是否有效
if [ "$1" = "" ]
then
return
fi #$PROCESS_NUM获取指定进程名的数目(过滤文件名 checkProcess.sh)
#【此处做了修订,加入grep -v "checkProcess.sh",对应修改IS_RUNNING_NUM= 为 IS_RUNNING_NUM=】
PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | grep -v "checkProcess.sh" | wc -l` #判断进程正在运行的数量
IS_RUNNING_NUM= echo "Current Process num:$PROCESS_NUM" #实际进程数PROCESS_NUM小于判断为运行中的数IS_RUNNING_NUM,表示有错误,需要重新启动
if [ $PROCESS_NUM -lt $IS_RUNNING_NUM ];
then
return
else
return
fi
} #如果参数1或者参数2为空,提示用法
if [ -z "$1" -o -z "$2" ]
then
echo "Usage: checkProcess.sh process execCommand"
echo 'Example: checkProcess.sh "httpd" "/etc/init.d/httpd start"'
exit
fi # 检查test实例是否已经存在
# checkProcess.sh "httpd" "/etc/init.d/httpd start"
checkProcess $
checkResult=$?
if [ $checkResult -eq ];
then
# 杀死所有test进程,可换任意你需要执行的操作
killall - $
echo "Now execute: $2"
# 在后台执行程序
exec $ &
else
echo "Process is running"
fi crontab示例
#启动apache服务
*/ * * * * /root/shell/checkProcess.sh "/usr/sbin/httpd" "/root/shell/httpdstart.sh"
#启动mysql服务
*/ * * * * /root/shell/checkProcess.sh "/usr/sbin/mysqld" "/root/shell/mysqldstart.sh"
这里为了方便(有些服务的启动命令比较长),把启动代码封装进了shell脚本中,读者可以直接写启动命令 httpdstart.sh脚本如下:
#!/bin/bash
/usr/sbin/httpd -k start
shell+crontab 实时服务进程监控重启的更多相关文章
- Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx
第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...
- Linux系统性能统计工具Sar和实时系统性能监控脚本
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...
- 网络分析shell脚本(实时流量+连接统计)
介绍一个强大的分析网络的shell脚本,此脚本是从EZHTTP拆分出来的,觉得有必要单独介绍下.脚本运行效果截图: 此脚本包含的功能有: 1.实时监控任意网卡的流量 2.统计10秒内平均流量 3.统计 ...
- .NetCore使用skywalking实现实时性能监控
一.简介 很久之前写了一篇 <.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控>关于NetCore性能监控的文章,使用Inf ...
- shell基础语法以及监控进程不存在重新启动
转码 # dos2unix ./test.sh 权限 # chmod a+x ./test.sh 语法变量var="111"echo $varecho ${var} 运算no1=4 ...
- [Asp.net]SignalR实现实时日志监控
摘要 昨天吃饭的时候,突然想起来一个好玩的事,如果能有个页面可以实时的监控网站或者其他类型的程序的日志,其实也不错.当然,网上也有很多成熟的类似的监控系统.就想着如果通过.net该如何实现?所以就在想 ...
- SignalR实现实时日志监控
.net SignalR实现实时日志监控 摘要 昨天吃饭的时候,突然想起来一个好玩的事,如果能有个页面可以实时的监控网站或者其他类型的程序的日志,其实也不错.当然,网上也有很多成熟的类似的监控系统 ...
- Linux进程实时IO监控iotop命令详解
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
- ASP.NET Core之跨平台的实时性能监控(2.健康检查)
前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性 ...
随机推荐
- (转)libvirt API的基本概念
本文摘自:http://blog.sina.com.cn/s/blog_da4487c40102v31i.html libvirt对象 libvirt的对象向外展现了虚拟化环境的所有资源.libvir ...
- GetHashCode作用
除了以下的转载,再补充几点: 1.相同对象的hashcode一定相同,不同的hashcode不一定不相同. 2.好的散列算法可以更均匀的分布,进而可以更快的索引 3.据说,值对象的hashcode由第 ...
- react-native init安装指定版本的react-native
C:\Users\ZHONGZHENHUA\imooc_gp\index.js index.js /** @format */ import React,{ Component } from 'rea ...
- ”$-”与shell默认选项
一.前言 之所以整理这篇博客,主要是写Linux环境设置文件 的时候,在查看/etc/profile时看到这么一段代码: for i in /etc/profile.d/*.sh ; do if [ ...
- 5-SOM神经网络
https://blog.csdn.net/gavinlyy/article/details/8302814 https://blog.csdn.net/u011314012/article/deta ...
- 我理解的MVCC内部实现原理
MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lo ...
- linux fuser的使用
当进行共享存储的时候,umount可能无法用于卸载某个设备,说是被某个进程所占用,但是又无法找到该进程.这个时候使用fuser -km /data命令杀死所有在使用这个存储设备的进程然后再umount ...
- python中执行命令的3种方法小结-乾颐堂
目前我使用到的python中执行cmd的方式有三种: 1. 使用os.system("cmd") 特点是执行的时候程序会打出cmd在linux上执行的信息. import os o ...
- js改变触发
onchange="doEmpty($(this))"
- HUST软测1504班第4周小组作业成绩:WordCount优化
说明 本次公布的成绩为第四周作业的结果: 第4周小组作业:WordCount优化 博客推荐:本次作业有一位同学完成有创意,推荐优秀博客.(优秀博客不会对成绩带来正面或者负面影响)PS:做任何创新的任务 ...