找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 76|回复: 8

Linux 进程自动监控shell脚本

[复制链接]

8

主题

7

回帖

50

积分

注册会员

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

一、使用方法

下载、解压、运行

[ol]
  • wget https://wangyan.org/download/script/pid_auto_reboot.tar.gz
  • tar -zxf pid_auto_reboot.tar.gz
  • vim pid_auto_reboot.sh #修改预设阀值
  • [/ol]复制代码

    设置每分钟检查一次

    [ol]
  • crontab -e
  • * * * * * /bin/bash /root/cut_nginx_logs.sh
  • [/ol]复制代码

    二、原理解释

    [ol]
  • # 设置最大内存占用百分比
  • PID_MEM_MAX="85"
  • # 设置最大系统负载
  • SYS_LOAD_MAX="3"
  • # 设置需要监控的服务名称
  • NAME_LIST="php-fpm mysql"
  • for NAME in $NAME_LIST
  • do
  •     # 初始化内存统计
  •     PID_MEM_SUM=0
  •     # 获取该程序总进程数
  •     PID_NUM_SUM=`ps aux | grep $NAME | wc -l`
  •     # 列出每个进程内存占用百分比
  •     PID_MEM_LIST=`ps aux | grep $NAME | awk '{print $4}'`
  •     # 计算所有进程总内存占用
  •     for PID_MEM in $PID_MEM_LIST
  •     do
  •         PID_MEM_SUM=`echo $PID_MEM_SUM + $PID_MEM | bc`
  •     done
  •     # 获取最近一分钟系统负载
  •     SYS_LOAD=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`
  •     # 比较内存占用和系统负载是否超过阀值
  •     MEM_VULE=`awk 'BEGIN{print('"$PID_MEM_SUM"'>='"$PID_MEM_MAX"'?"1":"0")}'`
  •     LOAD_VULE=`awk 'BEGIN{print('"$SYS_LOAD"'>='"$SYS_LOAD_MAX"'?"1":"0")}'`
  •     # 如果系统内存占用和系统负载超过阀值,则进行下面操作。
  •     if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
  •         #  写入日志
  •         echo $(date +"%y-%m-%d %H:%M:%S") "killall $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)">> /var/log/autoreboot.log
  •         # 正常停止服务
  •         /etc/init.d/$NAME stop
  •         sleep 3
  •         # 强制关闭
  •         pkill $NAME
  •        #  重启
  •         /etc/init.d/$NAME start
  •        #写入日志
  •         echo $(date +"%y-%m-%d %H:%M:%S") "start $NAME" "(MEMPID_MEM_SUM,LOADSYS_LOAD)" >> /var/log/autoreboot.log
  •     else
  •         echo "$NAME very health!(MEMPID_MEM_SUM,LOADSYS_LOAD)" > /dev/null
  •     fi
  • done
  • [/ol]复制代码

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

    使用道具 举报

    186

    主题

    2009

    回帖

    4614

    积分

    论坛元老

    积分
    4614
    发表于 2011-8-8 00:04:21 | 显示全部楼层
    看看了。。。。。。。。。。。。。
    回复

    使用道具 举报

    186

    主题

    2009

    回帖

    4614

    积分

    论坛元老

    积分
    4614
    发表于 2011-8-8 00:05:27 | 显示全部楼层
    lz你的博客很慢
    回复

    使用道具 举报

    53

    主题

    4296

    回帖

    8801

    积分

    论坛元老

    积分
    8801
    发表于 2011-8-8 00:07:44 | 显示全部楼层








    强大

    再加个CC判断就不错了
    回复

    使用道具 举报

    8

    主题

    7

    回帖

    50

    积分

    注册会员

    积分
    50
     楼主| 发表于 2011-8-8 00:08:00 | 显示全部楼层
    原帖由 金关村村长 于 2011-8-8 00:05 发表


    lz你的博客很慢


    he.net的Fremont挂掉,才刚恢复呢。。。

    回复

    使用道具 举报

    13

    主题

    161

    回帖

    369

    积分

    中级会员

    积分
    369
    发表于 2011-8-8 00:08:37 | 显示全部楼层
    我今天中午还在楼主的博客里面看文章









    回复

    使用道具 举报

    53

    主题

    4296

    回帖

    8801

    积分

    论坛元老

    积分
    8801
    发表于 2011-8-8 00:09:39 | 显示全部楼层
    技术贴,顶。。。
    回复

    使用道具 举报

    115

    主题

    2355

    回帖

    5099

    积分

    论坛元老

    积分
    5099
    发表于 2011-8-8 00:16:20 | 显示全部楼层
    看了一阵楼主的博客

    回复

    使用道具 举报

    349

    主题

    1608

    回帖

    4315

    积分

    论坛元老

    积分
    4315
    发表于 2011-8-8 00:16:36 | 显示全部楼层
    正文有错误,copy的?

    另外脚本的一个缺点:没有限制单线程运行收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-1-12 01:09 , Processed in 0.022129 second(s), 5 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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