当前位置: 首页 > news >正文

【Linux 性能采集】定周期采集某进程的CPU、内存、文件描述符信息并存储到文件【2025.05.21】

定周期采集某进程的CPU、内存、文件描述符信息并存储到文件

采集原理是基于top命令提取关注的参数。输出到文件采用tee 命令,即在控制台窗口打印,也输出到文件。例如:./monitor.sh | tee 123.csv

代码如下:


```bash
#!/bin/bash# 配置部分
PROCESS_NAME="YourApp"
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')  # 获取当前时间戳
LOG_FILE="monitor_output_${TIMESTAMP}.csv"  # 日志文件名带上时间戳# 清空日志文件(如果需要保留历史数据,请注释下一行)
> "$LOG_FILE"# 写入 CSV 头部
echo "Timestamp,PID,User,CPU(%),RSS(KB),FDs" > "$LOG_FILE"echo "Monitoring started at $(date)" | tee -a "$LOG_FILE"# 持续监控
while true; do# 获取PIDPID=$(pgrep -x "$PROCESS_NAME" | head -n1)if [ -z "$PID" ]; thenecho "$(date '+%Y-%m-%d %H:%M:%S'),,,Process $PROCESS_NAME not found." else# 使用 top 命令获取 CPU 使用率和 RSSCPU=$(top -b -n2 -p "$PID" |tail -n 1| awk '{print $9}') # 采集2次取第二次的数据MEM_RSS=$(top -b -n 1 -p "$PID" | grep "$PID" | awk '{print $6}') # RSS in KBUSER=$(top -b -n 1 -p "$PID" | grep "$PID" | awk '{print $2}')# 获取打开的文件描述符数量,并忽略 lsof 警告FD_COUNT=$(lsof -p "$PID" 2>/dev/null | wc -l)# 写入日志文件(CSV 格式)echo "$(date '+%Y-%m-%d %H:%M:%S'),$PID,$USER,$CPU,$MEM_RSS,$FD_COUNT"fi# 等待5秒sleep 5
done

相关文章:

  • PromptIDE:一款强大的AI提示词优化工具
  • 【IC验证】systemverilog_包
  • 在线免费图片处理工具-传道软件图片工具
  • PH热榜 | 2025-05-21
  • 《对话记忆的进化史:智能体大模型如何实现跨轮次的深度交互》
  • id分页遍历数据漏行问题
  • 8天Python从入门到精通【itheima】-26~28
  • sqli-labs第十九关——POST-referer注入
  • 程序员日志之DNF手游笔者成长记录(一周年)
  • 【音频编码格式】AAC详解
  • 基于vue框架的动漫论坛g2392(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • java加强 -网络编程
  • 自动获取新版本 js 静态文件
  • 嵌入式开发学习日志(linux系统编程--文件读写函数(2))Day25
  • 【5.19-5.26学习周报】
  • 鸿蒙 模块的创建+Video简单使用
  • [Basic] 03.QEMU Task Model 概览
  • 项目时间紧迫的高效应对策略
  • KCTF-遗世独立
  • SpringBoot外部化配置
  • 网站建设宣传视频/百度认证考试
  • 初学网站开发书籍/百度竞价推广点击器
  • 专业商城网站建设哪家便宜/seo排名优化教程
  • 校园网站建设情况汇报/培训心得体会总结简短
  • 开发商交房需要提供哪些证书/兰州seo公司