修正版:



#!/bin/sh

#check memcache process and restart if down



mm_bin="/usr/local/bin/memcached"

mm_log="/home/xxx/memcached_check.log"

mm_ports=("11211" "11212")

mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")

mm_count=${#mm_ports[@]}



t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")

i=0

while [ $i -lt $mm_count ]

do

mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`



if [ "$mm_exists" == "0" ]; then

${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &

echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}

fi



let i++

done



===============================================================



加入为自己主动运行:

    #crontab -e

*/10 * * * * /bin/sh /home/xxx/memcached_check.sh




系统每10分钟会自己主动运行memcached_check.sh



-------------------------------------------------------------

备用shell语句:



#检查mysql状态

PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`

if [ "$PORT" -eq "3306" ]



#检查mysql占CPU负载

mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`

#假设mysql cpu负载大于80,则重新启动mysql

if [ "$mysql_cpu" -ge "80" ]



#获得相关信息

ps -ef|grep "memcached"|grep -v "grep"|wc -l

ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l

ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'

ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'



MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`

HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`

PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`

DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`



----------------------------------------------------------------------------

shell if语句的一些资料:

–b 当file存在而且是块文件时返回真

-c 当file存在而且是字符文件时返回真

-d 当pathname存在而且是一个文件夹时返回真

-e 当pathname指定的文件或文件夹存在时返回真

-f 当file存在而且是正规文件时返回真

-g 当由pathname指定的文件或文件夹存在而且设置了SGID位时返回为真

-h 当file存在而且是符号链接文件时返回真,该选项在一些老系统上无效

-k 当由pathname指定的文件或文件夹存在而且设置了“粘滞”位时返回真

-p 当file存在而且是命令管道时返回为真

-r 当由pathname指定的文件或文件夹存在而且可读时返回为真

-s 当file存在文件大小大于0时返回真

-u 当由pathname指定的文件或文件夹存在而且设置了SUID位时返回真

-w 当由pathname指定的文件或文件夹存在而且可运行时返回真。一个文件夹为了它的内容被訪问必定是可运行的。

-o 当由pathname指定的文件或文件夹存在而且被子当前进程的有效用户ID所指定的用户拥有时返回真。

UNIX Shell 里面比較字符写法:

-eq 等于

-ne 不等于

-gt 大于

-lt 小于

-le 小于等于

-ge 大于等于

-z 空串

= 两个字符相等

!= 两个字符不等

-n 非空串



------------------------------------------------------------

crontab 的一些资料:



基本格式:

*  *  *  *  *  command

分  时 日  月  周  命令




第1列表示分钟1~59 每分钟用 * 或 */1 表示,*/10表示每10分钟

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

Shell脚本检查memcache进程并自己主动重新启动的更多相关文章

  1. linux使用shell脚本停止java进程

    使用shell脚本停止java进程,过程就是先查出对应的java进程pid,然后kill掉 - | 其中xxx是对应进程的关键词(即从查出的所有java进程中分辨出目标进程)

  2. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

  3. shell脚本--监控java进程存活脚本

    #!/bin/bash base_dir=/opt war_processor="tomcat" jar_processor="manager-server.jar pl ...

  4. shell脚本执行查找进程,然后查杀进程

    shell 执行查找进程,然后查杀进程脚本如下: ps -ef | grep 'IOE' |grep -v 'grep'| awk '{print \$2}' |while read pid; do ...

  5. 使用shell脚本守护node进程

    现在开源的守护node进程的包有不少,比如forever,pm2,这里我就不再赘述了. 但是有的公司生产服务器是不能联网的,而这些包都需要全局安装,必须要网络环境.难道你nohup node app. ...

  6. Shell脚本中让进程休眠的方法(sleep用法)

    有时候写Shell的脚本,用于顺序执行一系列的程序. 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间就结束掉. 这么如果 shell 还没 ...

  7. shell脚本杀掉指定进程下所有子进程(包括子进程的子进程)

    搜索了网上好像并没有杀掉指定进程下所有子进程(包括子进程的子进程)的脚本,自己琢磨写了一版,虽说比较简单,但希望分享大家,帮助需要的人 #!/bin/sh # 递归找到进程最底层子进程并杀除. mai ...

  8. shell脚本中判断进程是否存在

    #! /bin/bash PROC_NAME=docker ProcNumber=`ps -ef |grep -w $PROC_NAME|grep -v grep|wc -l` ];then echo ...

  9. shell脚本批量杀死进程

    使用Ubuntu系统时常会遇到机器卡死的情况(人生最大的痛苦),所有的键都没有用,只好强制关机,我似乎对此已经'乐此不疲了'. 看到又神牛说: 可以在tty里面把相关的进程杀死,之后就正常.(到目前我 ...

随机推荐

  1. Nodejs 项目开发

    最近这几个月都在学习nodejs. 国内nodejs的资料相对较少,就我所搜索到的,CSDN目前的代码托管平台有不少从github弄过来的开源镜像,其它的不错的社区有cnodejs,byvoid的个人 ...

  2. TraceView总结

    一.TraceView简单介绍 TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析. TraceView是图形化的工具,终 ...

  3. ASP.NET成员资格与角色管理配置内容

    Web.config中进行配置 以便于连接数据库,使用微软提供的Membership类.·····等   <?xml version="1.0" encoding=" ...

  4. Eclipse用法和技巧三:自动生成Main方法2

    上一篇文章里面介绍了新建文件时候自动添加main方法,这里接着介绍自动联想main方法.       步骤一:输入"main” 步骤二:保持光标在上图位置,按ALT + /,再回车 上一篇文 ...

  5. 首款符合PICO-ITX规格的A20开源硬件开发平台

    http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NzM0MjcyMQ==&appmsgid=10001083&itemidx=2&am ...

  6. LINUX 命令行编辑

    向          <-前               后 -> 删除 ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dl ctrl + h      删除光标 ...

  7. C陷阱与缺陷代码分析之第1章词法陷阱

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 编译器中负责将程序分解为一个一个符号的部分,称为“词法分析器”.下面看一个例子: if(x > big) bi ...

  8. 国际化之DateFormat、NumberFormat

    之所以在国际化中介绍DateFormat和NumberFormat这两个类,一是因为本身这两个类是地区敏感类,即可用传入Locale对象:二是因为这两个类具有不同的输出模式,而这些模式能在国际化的动态 ...

  9. Net Core-Razor

    几行代码解决Razor中的嵌套if语句 MVC开发中,经常会遇到在razor中插入简单的逻辑判断. @if (clientManager.IsAdmin) { if (!Model.Topic.Top ...

  10. Jexus + Kestrel 部署 asp.net core

    结合Jexus + Kestrel 部署 asp.net core 生产环境 ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依 ...