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(()) }