Monitorování zatížení počítače - skript

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #15 kdy: 07. 11. 2012, 18:11:58 »
A můžete mi prosím vysvětlit co dělá: top -b -n2 | grep %Cpu | tail -n1 | awk '{print $2+$4+$6+$10+$12+$14+$16"%"}', konkrétně teda to v té složené závorce? Je mi jasné, že něco sčítá, ale nevím co :))
A tak samo to teda půjde i u paměti že? Až na to, že místo grep %Cpu napíšu grep %ram nebo jak to tam je ...


Jméno:

Re:Monitorování zatížení počítače - skript
« Odpověď #16 kdy: 08. 11. 2012, 13:29:57 »
A můžete mi prosím vysvětlit co dělá: top -b -n2 | grep %Cpu | tail -n1 | awk '{print $2+$4+$6+$10+$12+$14+$16"%"}', konkrétně teda to v té složené závorce? Je mi jasné, že něco sčítá, ale nevím co :))
A tak samo to teda půjde i u paměti že? Až na to, že místo grep %Cpu napíšu grep %ram nebo jak to tam je ...

Awk napred rozdeli radek na jednotlive casti pomoci znaku " " (mezera, jiny se da zvolit pomoci -F) a k tem se potom da dostat pomoci $x, takze kdyz napises treba awk '{print $1}' tak ti to vypise %Cpu(s):
Dalsi veci o awk vi man. :)

Jo jinak jestli to po tobe nechce nekdo ve skole a ma to doopravdy k necemu byt, tak bych radsi zkusil nejake existujici reseni.

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #17 kdy: 09. 11. 2012, 09:39:48 »
Super, děkuju moc všem :)

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #18 kdy: 21. 11. 2012, 10:57:17 »
Mám ještě jeden problém, mohli byste mi ještě prosím poradit jak to zapsat do toho skriptu? Něco jsem vykutila, ale bude to špatně.

#!/bin/bash/

if [ top -b -n2 | grep %Cpu | tail -n1 >= 100 ];
 then echo 'Doslo k prekroceni hodnoty CPU'
fi

if [ top -b -n2 | grep %mem | tail -n1 >= 80 ];
 then echo 'Doslo k prekroceni hodnoty RAM'
fi

Nevím jestli je dobře ta podmínka, hlásí mi to tam při spuštění nějaké chyby a pak celkově nevím jak mám poskládat tu podmínku. Ono skriptování nikdy nebylo mou silnou stránkou :))

Zopper

  • *****
  • 657
    • Zobrazit profil
Re:Monitorování zatížení počítače - skript
« Odpověď #19 kdy: 21. 11. 2012, 11:31:35 »


Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #20 kdy: 21. 11. 2012, 11:35:33 »
Bohužel jsou jsou, to už je úplně poslední věc, kterou mám udělat a nějak jsem se nad tím zasekla a pokud to zvládnu, tak mám zápočet a bude klid :))

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #21 kdy: 21. 11. 2012, 11:49:19 »
Takže stačí v podstatě jen vyměnit >= za -eg?

bw

Re:Monitorování zatížení počítače - skript
« Odpověď #22 kdy: 21. 11. 2012, 12:13:53 »
Takže stačí v podstatě jen vyměnit >= za -eg?
nestaci, pretoze a) by to malo byt -eq (equals), za b) floaty v bashi nefunguju a to co vyhodi top float je.

k predchadzajucemu postu: prvy riadok bude #!/bin/bash, nie #!/bin/bash/, ale idealne, ak ma byt skript prenositelny, pouzivaniu bash v #! sa vyhni. dalej by som pouzil

if [[ $(bc <<< "$(top -b -n1 | grep ^Cpu | awk -F': ' '{print $2}' | awk -F% '{print $1}') >= 100") -eq 1 ]] ; then echo 'Doslo k prekroceni hodnoty CPU'; fi

tail je zbytocny, ak sa pouzije top -n1. Takze riesenie mas, este mi dodatocne vysvetli kazdy jeden prikaz, ok? ;)

bw

Re:Monitorování zatížení počítače - skript
« Odpověď #23 kdy: 21. 11. 2012, 12:15:38 »
videl som prvy post - za aku dobu sa maju pocitat tie priemery? 5 sekund? hodina? 2 roky? to este dost zmeni vysledok ;)

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #24 kdy: 21. 11. 2012, 13:06:39 »
Doba není určena, takže já to prostě beru tak, že když uživatel skript spustí tak se sleduje vytížení v tom čase.

Jinak teda se vykoná příkaz top, který ukáže vytížení, tam se najde řetezec cpu a tomu awk moc nerozumím, vím že hledá nějaké řádky, pipa je pak spojuje, celý ten top pak "převedeme" na float, no a těm procentům a stříškám moc nerozumím.

Jméno:

Re:Monitorování zatížení počítače - skript
« Odpověď #25 kdy: 24. 11. 2012, 23:03:22 »
tail je zbytocny, ak sa pouzije top -n1. Takze riesenie mas, este mi dodatocne vysvetli kazdy jeden prikaz, ok? ;)

tadeas: Dobře, já vyzkouším všechno a vyberu co mi bude nejlépe vyhovovat, mimochodem, někde se píše, že /proc/loadavg není přímo vytížení procesoru ...

To je pravda, neni. :)

Teď už 13,8......funguje to!  :D

Urcite? Me i kdyz zatizim procesor tak top pri -n1 ukaze nejake male cisla, ale -n2 uz je v pohode, tzn. neco takoveho me funguje uplne v pohode:

top -b -n2 | grep %Cpu | tail -n1 | awk '{print $2+$4+$6+$10+$12+$14+$16"%"}'

Máš pravdu, toto funguje dobře. Normálně mám 8% a po spuštění VM ve VirtualBoxu stoupá na 60%.


Jméno:

Re:Monitorování zatížení počítače - skript
« Odpověď #26 kdy: 24. 11. 2012, 23:15:15 »
Doba není určena, takže já to prostě beru tak, že když uživatel skript spustí tak se sleduje vytížení v tom čase.

Jinak teda se vykoná příkaz top, který ukáže vytížení, tam se najde řetezec cpu a tomu awk moc nerozumím, vím že hledá nějaké řádky, pipa je pak spojuje, celý ten top pak "převedeme" na float, no a těm procentům a stříškám moc nerozumím.

Striska u toho grepu znamena ze vyrazem "Cpu" musi zacinat radka, nestaci aby byl treba nekde uprostred (takze jestli nema nejakou divnou verzi grepu tak tam patri spis "^%Cpu"), kdyby te to nahodou zaujalo tak staci googlit regexp. :P

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #27 kdy: 25. 11. 2012, 18:59:51 »
Dobře děkuju a to wk dělá co? Hledám na internetu, vysvětleno to jakš takš je, ale já to nechápu. A jelikož budu muset vypsat ještě paměť tak by se to i hodilo :))

Jméno:

Re:Monitorování zatížení počítače - skript
« Odpověď #28 kdy: 26. 11. 2012, 00:15:58 »
Dobře děkuju a to wk dělá co? Hledám na internetu, vysvětleno to jakš takš je, ale já to nechápu. A jelikož budu muset vypsat ještě paměť tak by se to i hodilo :))

Awk je scriptovaci jazyk, co v nem naprogramujes to udela...

Ilhvm

Re:Monitorování zatížení počítače - skript
« Odpověď #29 kdy: 26. 11. 2012, 10:24:01 »
Výborně, a teda u toho mého případu awk '{print $2+$4+$6+$10+$12+$14+$16"%"}' sčítá co? řádky? a proč vždy ob dva?