cpustats 项目使用教程

cpustats 项目使用教程

cpustatsCPU Stats is a simple tool for android that displaying usage details of cpu within statusbar项目地址:https://gitcode.com/gh_mirrors/cp/cpustats

1. 项目的目录结构及介绍

cpustats/
├── COPYING
├── Makefile
├── README.md
├── cpustats.8
├── cpustats.c
└── debian/
    ├── changelog
    ├── compat
    ├── control
    ├── copyright
    ├── dirs
    ├── docs
    ├── rules
    └── source/
        ├── format
        └── options
  • COPYING: 项目的许可证文件,包含GPL-2.0许可证内容。
  • Makefile: 用于编译项目的Makefile文件。
  • README.md: 项目的基本介绍和使用说明。
  • cpustats.8: 项目的man page文件,包含详细的使用说明。
  • cpustats.c: 项目的主要源代码文件。
  • debian/: 包含用于Debian打包的文件和配置。

2. 项目的启动文件介绍

项目的启动文件是 cpustats.c,这是主要的源代码文件。通过编译这个文件,可以生成可执行文件 cpustats

3. 项目的配置文件介绍

项目没有明确的配置文件,所有的配置和参数都是通过命令行选项进行设置的。以下是一些常用的命令行选项:

  • -h: 显示帮助信息。
  • -a: 基于所有CPU ticks计算CPU利用率,而不是单个CPU。
  • -c: 从进程的comm字段获取命令名称(对CPU更友好)。
  • -d: 去掉命令信息的目录基名。
  • -D: 显示CPU利用率统计的分布。

例如,启动命令可以是这样的:

./cpustats -a -D

这个命令会基于所有CPU ticks计算CPU利用率,并显示CPU利用率的分布。


以上是 cpustats 项目的基本使用教程,希望对你有所帮助。

cpustatsCPU Stats is a simple tool for android that displaying usage details of cpu within statusbar项目地址:https://gitcode.com/gh_mirrors/cp/cpustats

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 Android 应用程序,可以实现记录可用 RAM 空间、可用 FLASH 空间、CPU 使用率、系统运行时间等信息的功能。 主要思路是通过读取系统文件并解析其中的数据,计算出所需的信息。具体实现如下: ``` import android.app.ActivityManager; import android.content.Context; import android.os.Build; import android.os.Environment; import android.os.StatFs; import android.os.SystemClock; import android.text.format.DateFormat; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; public class SystemInfo { private Context context; public SystemInfo(Context context) { this.context = context; } // 获取可用 RAM 空间 public long getAvailableMemory() { ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); activityManager.getMemoryInfo(memoryInfo); return memoryInfo.availMem; } // 获取总 RAM 空间 public long getTotalMemory() { String str1 = "/proc/meminfo"; String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192); str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); for (String num : arrayOfString) { if (num.endsWith("kB")) { initial_memory = Integer.valueOf(num.substring(0, num.length() - 2)) * 1024; break; } } localBufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } return initial_memory; } // 获取可用 FLASH 空间 public long getAvailableStorage() { StatFs stat = new StatFs(Environment.getDataDirectory().getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; } // 获取总 FLASH 空间 public long getTotalStorage() { StatFs stat = new StatFs(Environment.getDataDirectory().getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } // 获取 CPU 使用率 public float getCpuUsage() { try { String cpuStatPath = "/proc/stat"; BufferedReader reader = new BufferedReader(new FileReader(cpuStatPath)); String[] cpuStats = reader.readLine().split("\\s+"); reader.close(); long idle1 = Long.parseLong(cpuStats[4]); long cpu1 = Long.parseLong(cpuStats[1]) + Long.parseLong(cpuStats[2]) + Long.parseLong(cpuStats[3]) + Long.parseLong(cpuStats[4]) + Long.parseLong(cpuStats[5]) + Long.parseLong(cpuStats[6]) + Long.parseLong(cpuStats[7]); SystemClock.sleep(360); reader = new BufferedReader(new FileReader(cpuStatPath)); cpuStats = reader.readLine().split("\\s+"); reader.close(); long idle2 = Long.parseLong(cpuStats[4]); long cpu2 = Long.parseLong(cpuStats[1]) + Long.parseLong(cpuStats[2]) + Long.parseLong(cpuStats[3]) + Long.parseLong(cpuStats[4]) + Long.parseLong(cpuStats[5]) + Long.parseLong(cpuStats[6]) + Long.parseLong(cpuStats[7]); return (float) (cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1)); } catch (IOException ex) { ex.printStackTrace(); } return 0; } // 获取系统运行时间 public String getSystemUpTime() { long uptime = SystemClock.elapsedRealtime(); long hours = uptime / 3600000; long minutes = (uptime % 3600000) / 60000; long seconds = (uptime % 60000) / 1000; return String.format("%02d:%02d:%02d", hours, minutes, seconds); } // 格式化存储空间大小,保留两位小数 private String formatSize(long size) { String suffix = null; if (size >= 1024) { suffix = "KB"; size /= 1024; if (size >= 1024) { suffix = "MB"; size /= 1024; } } StringBuilder resultBuffer = new StringBuilder(new DecimalFormat("#.00").format(size)); if (suffix != null) resultBuffer.append(suffix); return resultBuffer.toString(); } // 获取当前时间 public String getCurrentTime() { return DateFormat.format("yyyy-MM-dd kk:mm:ss", System.currentTimeMillis()).toString(); } // 获取系统信息 public String getSystemInfo() { StringBuilder sb = new StringBuilder(); sb.append("RAM: ").append(formatSize(getAvailableMemory())).append(" / ").append(formatSize(getTotalMemory())).append("\n"); sb.append("SDCARD: ").append(formatSize(getAvailableStorage())).append(" / ").append(formatSize(getTotalStorage())).append("\n"); sb.append("CPU: ").append(new DecimalFormat("#.00%").format(getCpuUsage())).append("\n"); sb.append("UpTime: ").append(getSystemUpTime()).append("\n"); sb.append("Time: ").append(getCurrentTime()); return sb.toString(); } } ``` 以上代码中,`getAvailableMemory()`、`getTotalMemory()`、`getAvailableStorage()`、`getTotalStorage()`、`getCpuUsage()`、`getSystemUpTime()`、`getCurrentTime()` 方法分别用于获取可用 RAM 空间、总 RAM 空间、可用 FLASH 空间、总 FLASH 空间、CPU 使用率、系统运行时间以及当前时间。`formatSize()` 方法用于将存储空间大小格式化为带有单位的字符串。`getSystemInfo()` 方法则将上述信息拼接成一个字符串返回。 需要注意的是,获取 CPU 使用率需要根据两次读取 `/proc/stat` 文件的数据计算出来,因此需要等待一段时间(这里是 360 毫秒)以确保两次读取的数据时间间隔足够长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘俭渝Erik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值