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 &

四:现象

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

相关推荐
桂花树下的猫2 分钟前
ubuntu20.04上docker部署
运维·docker·容器
小李独爱秋3 分钟前
计算机网络经典问题透视:端到端时延和时延抖动有什么区别?
运维·服务器·计算机网络·安全·web安全
`林中水滴`3 分钟前
Linux系列:Ubuntu 防火墙命令
linux·ubuntu
自不量力的A同学4 分钟前
Docker 29.1.4
运维·docker·容器
雾岛听蓝6 分钟前
初识Linux
linux
听风吹雨yu13 分钟前
YoloV11的pt模型转rknn模型适用于RK3588等系列
linux·python·yolo·开源·rknn
电棍23313 分钟前
记录:采用安装.whl而非编译的一种环境配置思路
运维·深度学习
韩曙亮15 分钟前
【Web APIs】浏览器本地存储 ① ( window.sessionStorage 本地存储 | window.localStorage 本地存储 )
服务器·前端·javascript·本地存储·localstorage·sessionstorage·web apis
谷哥的小弟17 分钟前
SQLite MCP服务器安装以及客户端连接配置
服务器·数据库·人工智能·sqlite·大模型·源码·mcp
nihui12319 分钟前
Kali Linux 中 Nmap 工具详细使用指南
linux·网络·web安全