linux间隔记录服务器的CPU占用率TOP10的进程

一:原因

最近线上服务器上总数间隔出现CPU占用过高导致服务访问异常,查看服务运行日志和系统日志没有找到具体由哪个进程导致的,于是规划写一个间隔监控CPU占用率最高的脚本来监控是哪个进程导致的CPU过高

二:间隔记录CPU占用率TOP的sh脚本

创建一个sh脚本文件log_cpu_process.sh

复制代码
#!/bin/bash
 
# 设置日志文件
LOG_FILE="/data/log/log.log"
 
# 设置间隔时间(秒)
SLEEP_TIME=10
 
# 循环记录信息
while true; do
  # 记录当前时间戳
  timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  
  # 使用ps命令获取CPU使用率前10的进程,并输出到日志文件
  ps H -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -10 | awk '{print "'"$timestamp"', "$0}' >> $LOG_FILE

  # 休眠指定时间
  sleep $SLEEP_TIME
done

如上表示没间隔10秒将CPU占有率TOP10的进程信息存储到指定文件中

三:执行脚本

将log_cpu_process.sh文件执行可执行权限

复制代码
chmod +x log_cpu_process.sh

运行脚本

复制代码
./log_cpu_process.sh

以后台进程方式运行脚本

复制代码
nohup log_cpu_process.sh > /dev/null 2>&1 &

四:现象

执行脚本后我们就可以在对应目录下看到生成的日志记录文件

相关推荐
凯子坚持 c5 分钟前
亮数据MCP结合Dify:构建自动化视频数据抓取与智能分析工作流的深度实践
运维·eureka·自动化
爱上妖精的尾巴7 分钟前
8-8 WPS JS宏 正则表达式 字符组与任选
java·服务器·前端
山岚的运维笔记21 分钟前
SQL Server笔记 -- 第34章:cross apply
服务器·前端·数据库·笔记·sql·microsoft·sqlserver
nxbsc_wanglc42 分钟前
Linux安装redis
linux·运维·redis
Ffe144 分钟前
Linux提权四:Capability能力&LD_Preload加载
linux·提权·笔记总结
looking_for__1 小时前
【Linux】传输层协议UDP和TCP
linux·运维·tcp/ip·udp
Monly211 小时前
SSH:Windows系统、Linux系统配置如此简单
运维·ssh
网云工程师手记1 小时前
企业防火墙端口映射完整配置与安全收敛实操手册
运维·服务器·网络·安全·网络安全
好好学习天天向上~~1 小时前
8_Linux学习总结_进程
linux·运维·学习
Lw老王要学习1 小时前
无互联网的正式 CentOS 7.6环境中安装 mysql-8.0.36-1
linux·服务器·mysql·centos