Última atividade 1 month ago

Subcomando dashboard con monitorizacion en tiempo real (capitulo 07)

atareao's Avatar atareao revisou este gist 1 month ago. Ir para a revisão

1 file changed, 57 insertions

dashboard.rs(arquivo criado)

@@ -0,0 +1,57 @@
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 + }
Próximo Anterior