全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3498|回复: 10

[经验] Linux 进程自动监控shell脚本

[复制链接]
发表于 2011-8-8 00:01:37 | 显示全部楼层 |阅读模式
主要用于监控 linux 服务器负载及内存占用,如 MySQl、php-fpm,当负载或内存占用达到设置值后,便自动重启该进程以避免宕机。

一、使用方法

下载、解压、运行


  1. wget https://wangyan.org/download/script/pid_auto_reboot.tar.gz
  2. tar -zxf pid_auto_reboot.tar.gz
  3. vim pid_auto_reboot.sh #修改预设阀值
复制代码


设置每分钟检查一次


  1. crontab -e
  2. * * * * * /bin/bash /root/cut_nginx_logs.sh
复制代码


二、原理解释


  1. # 设置最大内存占用百分比
  2. PID_MEM_MAX="85"

  3. # 设置最大系统负载
  4. SYS_LOAD_MAX="3"

  5. # 设置需要监控的服务名称
  6. NAME_LIST="php-fpm mysql"

  7. for NAME in $NAME_LIST
  8. do
  9.     # 初始化内存统计
  10.     PID_MEM_SUM=0

  11.     # 获取该程序总进程数
  12.     PID_NUM_SUM=`ps aux | grep $NAME | wc -l`

  13.     # 列出每个进程内存占用百分比
  14.     PID_MEM_LIST=`ps aux | grep $NAME | awk '{print $4}'`

  15.     # 计算所有进程总内存占用
  16.     for PID_MEM in $PID_MEM_LIST
  17.     do
  18.         PID_MEM_SUM=`echo $PID_MEM_SUM + $PID_MEM | bc`
  19.     done

  20.     # 获取最近一分钟系统负载
  21.     SYS_LOAD=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

  22.     # 比较内存占用和系统负载是否超过阀值
  23.     MEM_VULE=`awk 'BEGIN{print('"$PID_MEM_SUM"'>='"$PID_MEM_MAX"'?"1":"0")}'`
  24.     LOAD_VULE=`awk 'BEGIN{print('"$SYS_LOAD"'>='"$SYS_LOAD_MAX"'?"1":"0")}'`

  25.     # 如果系统内存占用和系统负载超过阀值,则进行下面操作。
  26.     if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
  27.         #  写入日志
  28.         echo $(date +"%y-%m-%d %H:%M:%S") "killall $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)">> /var/log/autoreboot.log
  29.         # 正常停止服务
  30.         /etc/init.d/$NAME stop
  31.         sleep 3
  32.         # 强制关闭
  33.         pkill $NAME

  34.        #  重启
  35.         /etc/init.d/$NAME start
  36.        #写入日志
  37.         echo $(date +"%y-%m-%d %H:%M:%S") "start $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)" >> /var/log/autoreboot.log
  38.     else
  39.         echo "$NAME very health!(MEMPID_MEM_SUM,LOADSYS_LOAD)" > /dev/null
  40.     fi
  41. done
复制代码


原文:https://wangyan.org/blog/pid-auto-reboot-shell-html.html

评分

参与人数 2威望 +40 收起 理由
lxfy + 20 原创内容
Captain + 20 精品文章

查看全部评分

发表于 2011-8-8 00:04:21 | 显示全部楼层
看看了。。。。。。。。。。。。。
发表于 2011-8-8 00:05:27 | 显示全部楼层
lz你的博客很慢
发表于 2011-8-8 00:07:44 | 显示全部楼层


强大

再加个CC判断就不错了
 楼主| 发表于 2011-8-8 00:08:00 | 显示全部楼层
原帖由 金关村村长 于 2011-8-8 00:05 发表
lz你的博客很慢


he.net的Fremont挂掉,才刚恢复呢。。。
发表于 2011-8-8 00:08:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-8-8 00:09:39 | 显示全部楼层
我今天中午还在楼主的博客里面看文章
发表于 2011-8-8 00:16:20 | 显示全部楼层
技术贴,顶。。。
发表于 2011-8-8 00:16:36 | 显示全部楼层
看了一阵楼主的博客
发表于 2011-8-9 18:17:44 | 显示全部楼层
正文有错误,copy的?

另外脚本的一个缺点:没有限制单线程运行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-5-2 00:50 , Processed in 0.068642 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表