21 个版本
0.1.21 | 2022年8月17日 |
---|---|
0.1.20 | 2022年8月14日 |
0.1.19 | 2022年7月10日 |
0.1.14 | 2022年6月20日 |
0.1.8 | 2022年4月13日 |
391 在 开发工具
71 每月下载量
用于 disk_list
120KB
3K SLoC
get_sys_info
获取系统信息
信息 | 描述 |
---|---|
CPU 负载 | CPU 负载信息 |
平均负载 | 文本 |
内存使用 | 获取实时内存使用 |
运行时间/启动时间 | 获取系统启动时间 |
电池寿命 | 获取电池寿命信息 |
文件系统挂载(和磁盘使用情况) | 获取文件系统挂载、总空间、可用空间 |
磁盘 I/O 统计信息 | 获取磁盘 I/O 信息 |
网络接口 | 获取网络接口信息 |
网络流量统计信息 | 获取网络统计信息 |
CPU 温度 | 获取 CPU 使用率 |
支持的平台 |
---|
FreeBSD |
Linux |
OpenBSD |
Windows |
macOS |
示例
use get_sys_info::{saturating_sub_bytes, Platform, System};
use std::thread;
use std::time::Duration;
fn main() {
let sys = System::new();
{
let mounts = sys.mounts().unwrap_or_else(|r| {
println!("get mounts error:{}", r);
vec![]
});
for mount in mounts.iter() {
println!(
"[mounted_from:{}, file_type:{},mounted_at:{},available:{},total:{}]",
mount.fs_mounted_from, mount.fs_type, mount.fs_mounted_on, mount.avail, mount.total
);
}
}
{
match sys.mount_at("/") {
Ok(mount) => {
println!(
"[mounted_from:{}, file_type:{},mounted_at:{},available:{},total:{}]",
mount.fs_mounted_from,
mount.fs_type,
mount.fs_mounted_on,
mount.avail,
mount.total
);
}
Err(x) => println!("\n mount_at /: error: {}", x),
}
}
{
let stats = sys.block_device_statistics().unwrap_or_else(|r| {
println!("get block_device_statistics error error:{}", r);
std::collections::BTreeMap::new()
});
for blkstats in stats.values() {
println!("{}: {:?}", blkstats.name, blkstats);
}
}
{
let netifs = sys.networks().unwrap_or_else(|r| {
println!("\n networks: error: {}", r);
std::collections::BTreeMap::new()
});
for netif in netifs.values() {
println!(
"{} statistics: ({:?})",
netif.name,
sys.network_stats(&netif.name)
);
}
}
{
match sys.battery_life() {
Ok(battery) => print!(
"\nBattery: {}%, {}h{}m remaining",
battery.remaining_capacity * 100.0,
battery.remaining_time.as_secs() / 3600,
battery.remaining_time.as_secs() % 60
),
Err(x) => print!("\n battery: error: {}", x),
}
}
{
match sys.on_ac_power() {
Ok(power) => println!(", AC power: {}", power),
Err(x) => println!(", AC power: error: {}", x),
}
}
{
match sys.memory() {
Ok(mem) => println!(
"\n memory: {} used / {} ({} bytes) total ({:?})",
saturating_sub_bytes(mem.total, mem.free),
mem.total,
mem.total.as_u64(),
mem.platform_memory
),
Err(x) => println!("\n memory: error: {}", x),
}
}
{
match sys.load_average() {
Ok(loadavg) => println!(
"\n load_average: {} {} {}",
loadavg.one, loadavg.five, loadavg.fifteen
),
Err(x) => println!("\n load_average: error: {}", x),
}
}
{
match sys.uptime() {
Ok(uptime) => println!("\n uptime: {:?}", uptime),
Err(x) => println!("\n uptime: error: {}", x),
}
}
{
match sys.boot_time() {
Ok(boot_time) => println!("\n boot_time: {}", boot_time),
Err(x) => println!("\n boot_time: error: {}", x),
}
}
{
match sys.cpu_load_aggregate() {
Ok(cpu) => {
thread::sleep(Duration::from_secs(1));
let cpu = cpu.done().unwrap();
println!(
"CPU load: {}% user, {}% nice, {}% system, {}% intr, {}% idle ",
cpu.user * 100.0,
cpu.nice * 100.0,
cpu.system * 100.0,
cpu.interrupt * 100.0,
cpu.idle * 100.0
);
}
Err(x) => println!("\n cpu_load_aggregate: error: {}", x),
}
}
{
match sys.cpu_temp() {
Ok(cpu_temp) => println!("\n cpu_temp: {}", cpu_temp),
Err(x) => println!("\n cpu_temp: {}", x),
}
}
{
match sys.socket_stats() {
Ok(stats) => println!("\nsocket_stats: {:?}", stats),
Err(x) => println!("\nsocket_stats: error: {}", x),
}
}
}
依赖项
~1–7MB
~34K SLoC