dashboard.rs
· 2.1 KiB · Rust
Исходник
use anyhow::Result;
use sysinfo::Disks;
pub fn ejecutar(watch: u64) -> Result<()> {
loop {
print!("\x1B[2J\x1B[H");
let mut system = sysinfo::System::new_all();
system.refresh_all();
std::thread::sleep(sysinfo::MINIMUM_CPU_UPDATE_INTERVAL);
let disks = Disks::new_with_refreshed_list();
println!("╔═══════════════════════════════════════╗");
println!("║ DASHBOARD DEL SISTEMA ║");
println!("╚═══════════════════════════════════════╝");
println!();
println!("-- CPU --");
println!(" Nucleos: {}", system.cpus().len());
for (i, cpu) in system.cpus().iter().enumerate() {
println!(" CPU {}: {:6.2}%", i, cpu.cpu_usage());
}
println!(" Global: {:6.2}%", system.global_cpu_usage());
println!();
println!("-- Memoria --");
let total_mb = system.total_memory() as f64 / 1024.0 / 1024.0;
let usada_mb = system.used_memory() as f64 / 1024.0 / 1024.0;
let libre_mb = system.free_memory() as f64 / 1024.0 / 1024.0;
println!(" Total: {:.0} MB", total_mb);
println!(" Usada: {:.0} MB ({:.1}%)", usada_mb, usada_mb / total_mb * 100.0);
println!(" Libre: {:.0} MB", libre_mb);
println!();
println!("-- Discos --");
for disk in disks.list() {
let total_gb = disk.total_space() as f64 / 1024.0 / 1024.0 / 1024.0;
let libre_gb = disk.available_space() as f64 / 1024.0 / 1024.0 / 1024.0;
println!(
" {:?}: {:.1} GB libres de {:.1} GB ({:.0}% usado)",
disk.mount_point(),
libre_gb,
total_gb,
(1.0 - libre_gb / total_gb) * 100.0
);
}
if watch == 0 {
break;
}
std::thread::sleep(std::time::Duration::from_secs(watch));
}
Ok(())
}
| 1 | use anyhow::Result; |
| 2 | use sysinfo::Disks; |
| 3 | |
| 4 | pub fn ejecutar(watch: u64) -> Result<()> { |
| 5 | loop { |
| 6 | print!("\x1B[2J\x1B[H"); |
| 7 | |
| 8 | let mut system = sysinfo::System::new_all(); |
| 9 | system.refresh_all(); |
| 10 | std::thread::sleep(sysinfo::MINIMUM_CPU_UPDATE_INTERVAL); |
| 11 | |
| 12 | let disks = Disks::new_with_refreshed_list(); |
| 13 | |
| 14 | println!("╔═══════════════════════════════════════╗"); |
| 15 | println!("║ DASHBOARD DEL SISTEMA ║"); |
| 16 | println!("╚═══════════════════════════════════════╝"); |
| 17 | println!(); |
| 18 | |
| 19 | println!("-- CPU --"); |
| 20 | println!(" Nucleos: {}", system.cpus().len()); |
| 21 | for (i, cpu) in system.cpus().iter().enumerate() { |
| 22 | println!(" CPU {}: {:6.2}%", i, cpu.cpu_usage()); |
| 23 | } |
| 24 | println!(" Global: {:6.2}%", system.global_cpu_usage()); |
| 25 | |
| 26 | println!(); |
| 27 | println!("-- Memoria --"); |
| 28 | let total_mb = system.total_memory() as f64 / 1024.0 / 1024.0; |
| 29 | let usada_mb = system.used_memory() as f64 / 1024.0 / 1024.0; |
| 30 | let libre_mb = system.free_memory() as f64 / 1024.0 / 1024.0; |
| 31 | println!(" Total: {:.0} MB", total_mb); |
| 32 | println!(" Usada: {:.0} MB ({:.1}%)", usada_mb, usada_mb / total_mb * 100.0); |
| 33 | println!(" Libre: {:.0} MB", libre_mb); |
| 34 | |
| 35 | println!(); |
| 36 | println!("-- Discos --"); |
| 37 | for disk in disks.list() { |
| 38 | let total_gb = disk.total_space() as f64 / 1024.0 / 1024.0 / 1024.0; |
| 39 | let libre_gb = disk.available_space() as f64 / 1024.0 / 1024.0 / 1024.0; |
| 40 | println!( |
| 41 | " {:?}: {:.1} GB libres de {:.1} GB ({:.0}% usado)", |
| 42 | disk.mount_point(), |
| 43 | libre_gb, |
| 44 | total_gb, |
| 45 | (1.0 - libre_gb / total_gb) * 100.0 |
| 46 | ); |
| 47 | } |
| 48 | |
| 49 | if watch == 0 { |
| 50 | break; |
| 51 | } |
| 52 | |
| 53 | std::thread::sleep(std::time::Duration::from_secs(watch)); |
| 54 | } |
| 55 | |
| 56 | Ok(()) |
| 57 | } |