📌  相关文章
📜  记录进程 linux 的 cpu 使用情况 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:57:38.232000             🧑  作者: Mango

记录进程 Linux 的 CPU 使用情况 - Shell-Bash

在开发应用程序时,对 CPU 的使用情况进行监控和记录是非常重要的,以便更好地优化和调试程序。本文将介绍如何使用 Shell/Bash 脚本来记录进程的 CPU 使用情况。

准备工作

在开始编写脚本之前,需要安装 sysstat 工具包。在 Ubuntu 系统上,可以使用以下命令进行安装:

sudo apt-get install sysstat
编写脚本

以下是一个简单的 Shell/Bash 脚本,用于监控和记录某一进程的 CPU 使用情况:

#!/bin/bash

# 设置要监控的进程名
process_name="my_process"

# 记录上一次 CPU 时间
prev_total=0
prev_idle=0

while true; do
  # 读取进程的 CPU 时间
  pid=$(pgrep $process_name)
  stat_file="/proc/$pid/stat"
  read utime stime <<< $(awk '{print $14+$15, $16+$17}' $stat_file)

  # 计算 CPU 使用率
  total=$(grep -w cpu /proc/stat | awk '{print $2+$3+$4+$5+$6+$7+$8}')
  idle=$(grep -w cpu /proc/stat | awk '{print $5}')
  
  if [[ $prev_total != 0 ]]; then
    total_diff=$(( $total - $prev_total ))
    idle_diff=$(( $idle - $prev_idle ))
    cpu_usage=$(awk "BEGIN {printf \"%.2f\", 100*($total_diff-$idle_diff)/$total_diff}")
    echo "$(date +%s), $cpu_usage%"
  fi

  # 更新上一次 CPU 时间记录
  prev_total=$total
  prev_idle=$idle

  # 暂停一秒
  sleep 1
done

该脚本首先设置要监控的进程名称,然后在一个无限循环中不断读取进程的 CPU 时间,并计算 CPU 使用率。最后,它会记录 CPU 使用率的时间戳和数值,并每秒钟暂停一次。

运行脚本

将脚本保存为 cpu_monitor.sh 并赋予执行权限,然后使用以下命令运行它:

./cpu_monitor.sh

脚本将持续运行,记录进程的 CPU 使用情况。在需要停止监控时,可以按 Ctrl + C 终止脚本。

结论

使用上述 Shell/Bash 脚本,您可以很容易地记录某一进程的 CPU 使用情况,并据此进行进一步的分析和优化。希望这篇文章能够对开发者们有所帮助!