温馨提示×

ubuntu如何查看cpuinfo历史记录

小樊
44
2025-11-15 15:04:37
栏目: 智能运维

Ubuntu 查看 CPU 信息历史记录的可行方案

核心说明

  • /proc/cpuinfolscpu 展示的是内核当前感知的 CPU 信息,属于“运行时快照”,并非持久化日志;系统不会自动保存历史版本。要获得“历史记录”,需要自行定期采集并归档这些快照。

快速导出当前快照

  • 查看原始信息:cat /proc/cpuinfo
  • 使用更易读的工具:lscpu
  • 拷贝保存:cp /proc/cpuinfo cpuinfo_$(date +%F_%H-%M-%S).txt
  • 一键脚本示例(保存为 backup_cpuinfo.sh,chmod +x 后运行):
    #!/usr/bin/env bash
    ts=$(date +"%Y%m%d_%H%M%S")
    out="/var/log/cpuinfo/cpuinfo_${ts}.txt"
    mkdir -p "$(dirname "$out")"
    lscpu > "$out"
    cp /proc/cpuinfo "$out.cpuinfo"
    echo "Saved to $out"
    
    上述方法可快速把当前 CPU 信息导出为带时间戳的文件,便于后续对比与归档。

建立长期历史记录

  • 使用 logrotate 做按日轮转归档(推荐)
    1. 创建目录并赋权:sudo mkdir -p /var/log/cpuinfo && sudo chown $USER:$USER /var/log/cpuinfo
    2. 创建采集脚本 /usr/local/bin/collect_cpuinfo.sh:
      #!/usr/bin/env bash
      ts=$(date +"%Y-%m-%d %H:%M:%S")
      log=/var/log/cpuinfo/cpuinfo_$(date +%Y%m%d).log
      {
        echo "=== $ts ==="
        lscpu
        echo
        cat /proc/cpuinfo
      } >> "$log"
      
    3. 赋权:sudo chmod +x /usr/local/bin/collect_cpuinfo.sh
    4. 创建 systemd 定时器(/etc/systemd/system/cpuinfo-collect.timer):
      [Unit]
      Description=Collect CPU info daily
      
      [Timer]
      OnCalendar=daily
      Persistent=true
      
      [Install]
      WantedBy=timers.target
      
      创建服务单元(/etc/systemd/system/cpuinfo-collect.service):
      [Unit]
      Description=Collect CPU info
      
      [Service]
      Type=oneshot
      ExecStart=/usr/local/bin/collect_cpuinfo.sh
      
    5. 启用:sudo systemctl daemon-reload && sudo systemctl enable --now cpuinfo-collect.timer
    6. 配置 logrotate(/etc/logrotate.d/cpuinfo):
      /var/log/cpuinfo/*.log {
          daily
          rotate 30
          compress
          missingok
          notifempty
          create 0644 ubuntu ubuntu
      }
      
  • 使用 cron 简单定时(示例每天 02:00 执行)
    • 编辑:crontab -e
    • 加入:0 2 * * * /usr/local/bin/collect_cpuinfo.sh
  • 查询历史
    • 按日期查看:less /var/log/cpuinfo/cpuinfo_2025*.log
    • 对比两次快照:diff -u cpuinfo_20251101.log cpuinfo_20251115.log
    • 统计历史变更(示例统计 model name 行数变化):
      zgrep -h '^model name' /var/log/cpuinfo/cpuinfo_*.gz | sort | uniq -c
      
    以上方案通过定时采集 + 轮转归档,形成可回溯的 CPU 信息历史库。

只关注频率与调频历史

  • 若主要关心 CPU 频率随时间的变化,可记录 cpufreq 信息(需安装 cpufrequtils):
    • 安装:sudo apt-get install cpufrequtils
    • 采集示例(追加到历史文件):
      echo "=== $(date) ===" >> /var/log/cpuinfo/cpufreq.log
      cpufreq-info >> /var/log/cpuinfo/cpufreq.log
      
    • 配合上述 logrotate/cron 即可形成频率历史记录。

0