zoukankan      html  css  js  c++  java
  • Linux 通过Shell 查找问题进程 [转]

    背景介绍:

    最近公司服务器不太稳定,总是在凌晨某个时段突发高负载情况,因为客观环境比较复杂,所以很难猜测出到底是哪个进程出现了问题,加之故障发生时,通常我在睡觉,等我被报警短信吵醒,通过公司 VPN 登上服务器的时候,故障多半已经消失了!不过这个问题难不倒一个合格的 DevOps,让我写个 Shell 搞定它。

    实际上解决问题的思路非常简单:通过 CRON 每分钟运行一个 Shell,查询系统负载,一旦发现异常,就通过「ps」命令保存进程快照,也可以进一步保存负载,内存等相关的数据,但通常没有必要,因为通过「sar」命令很容易拿到。相关 Shell 代码如下:

    #/bin/bash
    
    LOAD=$(awk '{print $1}' /proc/loadavg)
    CPUNUM=$(grep -c processor /proc/cpuinfo)
    
    if [ $(echo "$LOAD > $CPUNUM" | bc) = 1 ]; then
        RESULT=$(ps -eo pcpu,pmem,user,args | awk '$1 > 0' | sort -nr)
        if [ -n "$RESULT" ]; then
            echo "$RESULT" > /var/log/ps.$(date +"%Y%m%d%H%M")
        fi
    fi
    Check Error PID

    需安装BC软件:yum -y install bc

    转载:http://huoding.com/2013/01/30/225

  • 相关阅读:
    DM逻辑结构
    DM常见问题
    DM进程与线程
    DM物理存储结构
    systemdlogind.service的RemoveIPC参数影响
    DM内存结构
    DMSQL记录日志跟踪功能
    ACM中java的使用
    Java读取CSV文件为List
    Vue打包优化 优化JS过大 西门
  • 原文地址:https://www.cnblogs.com/Mrhuangrui/p/4560424.html
Copyright © 2011-2022 走看看