Ruby + sysstat #3

Előzmények itt.

Röviden: egy apró Ruby script, amely megmutatja a legerőforrásigényesebb folyamatokat összesítve név szerint, vagyis a gyermekfolyamataikat és másik azonos nevű folyamatokat egybe veszi, hogy ne PID, hanem program típus alapján legyen látható, hogy milyen típusú folyamatok használják a legtöbb erőforrást - mindezt CPU, memória és diszk használat alapján.

A mostani verziót kiegészítettem a folyamat indulása óta felhasznált teljes I/O használattal (ez egyben tartalmazza a storage réteg: diszk, hálózat, tty, standard és egyéb ki- és bemenetek forgalmának mértékét), illetve a végén ezen statisztikát alapján számolok egy súlyozott értéket, és nyomtatok egy top sorrendet a folyamatok neveivel. Sajnos a kutatásom alapján nem tudok kinyerni a Linux kernel /proc kimenetéből folyamatra vetített hálózati forgalom használatot a futás kezdete óta, ezért hálózati forgalom statisztika nincs.

Alapértelmezetten a top 10 folyamatot mutatja, de ez a szám a forráskód legelején a $num változóban átírható. (A kód minősége a Ruby feature-ökhöz képest gyatra, mivel ez volt első Ruby kódom).

Ruby-n kívül más szükséges függősége nincs a programnak (pydf csak opcionális). Csak Linux a platform. Ruby 1.8.x - 1.9.x verziókkal tesztelve.

Forráskód itt | Képernyőkép itt

Hozzászólások

Egy javítást toltam bele, mostantól ok elvileg.

A df használatta pydf helyett jó ötlet, betettem, kösz (sárgával jobb imho a pydf-hez hasonlóan és hogy elkülönüljön). Az acpi-ről leteszek, mert SSH-n távolról konzolon úgysem igazán matat senki akksis gépet.

A df-et így oldottam meg, lehet van jobb is:


elsif which("df") and which("grep")
    puts yellow("Disk capacity:")
    system("df -h | grep '' -m1; df -h | grep '/dev/' --color=none")

v0.4: dobtam pydf hívogatását és csak df kimenetéből én állítom elő a progress bar-t. df van minden linux rendszeren, ahol nincs, ott meg nem jelenik meg a diszk infó. Ez a funkció többet nem érdemel.