linux - ubuntu中的脚本同时获取CPU温度和CPU使用率并保存到文件

标签 linux bash ubuntu command line

我需要在 Ubuntu 中编写脚本或命令行代码,从 lm_sensors 或类似的东西获取 CPU 温度和 CPU 使用率百分比,我想将此信息保存在 .txt 文件中,并包含每次测量的日期和时间。我尝试编写下面的 .sh 文件,温度可以工作,但 CPU 使用率无法正常工作,它每次只保存第一次测量。 有人可以帮助我吗?

while true;
do
  echo $( date '+%H:%M:%S' ): $( sensors | grep 'CPU Temperature' | sed -r 's/^.*:        +(.*)  +[(].*$/\1/' ) >> temperature.txt;
  echo $( date '+%H:%M:%S' ): $( top -b -n 1 | grep 'CPU:') >> cpu.txt;
  sleep 1; 
done

最佳答案

您可以计算 CPU 使用率,但只能随时间变化。 cpu 使用率不存储在文件中,您必须自己计算:

cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5) "%"}'

如果您有 CPU 温度传感器,它位于 /sys/class/hwmon 中。您需要自己找出哪一个是正确的,因为这取决于驱动程序。我猜我的是“coretemp”。

$ cat /sys/class/hwmon/hwmon*/name
acpitz
dell_smm
coretemp
nouveau

了解上述内容后,您可以执行以下操作:

#! /bin/bash

LOG=cpu.log
while true; do
    percentage=$(cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5) "%"}')
    echo -n "$(date "+%F-%T") " >> ${LOG}
    echo -n "$percentage " >> ${LOG}
    cat /sys/class/hwmon/hwmon2/temp1_input >> ${LOG}
done
exit 0
``

[1] [Getting cpu usage same every time.](https://unix.stackexchange.com/questions/69185/getting-cpu-usage-same-every-time)

关于linux - ubuntu中的脚本同时获取CPU温度和CPU使用率并保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57821461/

相关文章:

mysql错误ubuntu未知数据库

git - 如何在 Windows 的 Git Bash 终端下发出 EOF 信号以关闭标准输入? Ctrl-D 无效

string - 使用 bash/cut/split 提取字符串的一部分

python - 从 cron 作业修改 crontab

linux - Gnu make - 如何处理来自项目树外部的源代码

linux - 如何删除重复行并在awk中创建索引

linux - 如何在 Linux (Ubuntu) 服务器上运行 Visual Studio 代码

linux - 如何使用 bash 自动执行 linux cut 命令

r - devtools::check() - 没有名为 ‘Matrix’ 的包

ubuntu - AWS ubuntu 14.04 实例中的虚拟盒安装问题 "Running VirtualBox in a Xen environment is not supported"