Portál AbcLinuxu, 14. května 2025 02:47

Dotaz: top > awk > rrdtool

petka avatar 14.2.2009 00:27 petka | skóre: 25 | blog: heydax | Klasterec N/O
top > awk > rrdtool
Přečteno: 459×
Odpovědět | Admin

Da se nejakym lepsim zpusobem napsat  skript nez je zde napsany , zda se mi to moc divoke , hlavne opakovane volani atd ...

us=`top -n 1 | grep 'Cpu' | awk '{print $2}' | cut -d '%' -f1`

sy=`top -n 1 | grep 'Cpu' | awk '{print $3}' | cut -d '%' -f1`

ni=`top -n 1 | grep 'Cpu' | awk '{print $4}' | cut -d '%' -f1`

id=`top -n 1 | grep 'Cpu' | awk '{print $5}' | cut -d '%' -f1`

wa=`top -n 1 | grep 'Cpu' | awk '{print $6}' | cut -d '%' -f1`

hi=`top -n 1 | grep 'Cpu' | awk '{print $6}' | cut -d '%' -f1`

si=`top -n 1 | grep 'Cpu' | awk '{print $7}' | cut -d '%' -f1`

st=`top -n 1 | grep 'Cpu' | awk '{print $8}' | cut -d '%' -f1`

/usr/bin/rrdtool update databaze.rrd N:$us:$sy:$ni:$id:$wa:$hi:$si:$st

budu vdecny za jakekoliv napady a pripominky

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.2.2009 01:25 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: top > awk > rrdtool
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano dá.

Jednak vše, to co dělá grep, cut a awk umí awk (způsobů je samozřejmě více, ani nezkoumám Váš postup, pouze jej přepisuji):
top -n 1 | awk '/Cpu/{split($2,us,"%");print(us[1]);}'
No a pak samozřejmě to celé mohu napsat v awku, takže si naplním proměnné:
split($2,us,"%");
split($3,sy,"%");
...
split($8,st,"%");
A celé to z toho awku u zavolám pomocí system() nebo si tam celý ten řádek připravím a výsledek vrátím shellu ke zpracování.
http://prirucka.ujc.cas.cz/?ref=785&id=790.
petka avatar 14.2.2009 10:23 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: top > awk > rrdtool

diki moc stacilo jen nakopnout , uz se s tim poperu

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
petka avatar 14.2.2009 14:26 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: top > awk > rrdtool

promene se mi ulozili a ted printem , to uz nevim jak nebo mam spis malou predstavu jak by to melo vypadat  a porad se mi nedari dostat je do promennych

#!/bin/sh

db='/var/www/rrd/cpu'
rrd='/usr/bin/rrdtool'

top -n 1 | awk '//Cpu/{split($2,us,"%")
                      split($3,sy,"%")
                      split($4,ni,"%")
                      split($5,id,"%")
                      split($6,wa,"%")
                      split($7,hi,"%")
                      split($8,si,"%")
                      split($9,st,"%")
                      ;print "$rrd update $db N:\x27" $1 "\x27:\x27" $2 "\x27:\x27" $3 "\x27:\x27" $4 "\x27:\x27" $5 "\x27:\x27" $6 "\x27:\x27" $8 "\x27\"}'
 

celkem 8 promennych ktere potrebuju vlozit do programu rrdtool v tomhle formatu       $rrdtool update $db N:$us:$sy:$ni:$id:$wa:$hi:$si:$st

vim ze jsem blizko , nebo si to alespon myslim :-)

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
petka avatar 14.2.2009 15:00 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: top > awk > rrdtool

tak jsem pokrocil bez chyb hlasek

top -n 1 | awk '/Cpu/{split($2,us,"%")
                      split($3,sy,"%")
                      split($4,ni,"%")
                      split($5,id,"%")
                      split($6,wa,"%")
                      split($7,hi,"%")
                      split($8,si,"%")
                      split($9,st,"%")
                      ;print "/usr/bin/rrdtool update /usr/bin/rrdtool/cpu.rrd N:\x27"$2"\x27:\x27" $3 "\x27:\x27" $4 "\x27:\x27" $5 "\x27:\x27" $6 "\x27:\x27" $7 "\x27:\x27" $8 "\x27:\x27" $9 "\x27"}'

 

 

vysledek                               /usr/bin/rrdtool update /usr/bin/rrdtool/cpu.rrd N:'35.9%us,':'2.7%sy,':'0.0%ni,':'60.4%id,':'0.4%wa,':'0.2%hi,':'0.3%si,':'0.0%st'

kyzeny vysledek ale je       /usr/bin/rrdtool update /usr/bin/rrdtool/cpu.rrd N:35.9:2.7:0.0:60.4:0.4:0.2:0.3:0.0

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
14.2.2009 16:11 Luda
Rozbalit Rozbalit vše Re: top > awk > rrdtool

Takhle to dava, co pozadujete:

top -n 1 | awk '/Cpu/{split($2,us,"%")
                      split($3,sy,"%")
                      split($4,ni,"%")
                      split($5,id,"%")
                      split($6,wa,"%")
                      split($7,hi,"%")
                      split($8,si,"%")
                      split($9,st,"%")
                      ;print "/usr/bin/rrdtool update /usr/bin/rrdtool/cpu.rrd N:"us[1]":"sy[1]":"ni[1]":"id[1]":"wa[1]":"hi[1]":"si[1]":"st[1]}'


AWK nerozumim, ale tyhle odkazy mi pomohly:

www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_06_02.html

www.starlink.rl.ac.uk/star/docs/sc4.htx/node39.html

 

14.2.2009 22:22 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: top > awk > rrdtool
On stačil i man awk, je to tam vše v kostce docela dobře popsané. split(), vezme řetězec z prvního parametru, rozseká podle oddělovače z třetího parametru (nepovinný, pak se použijé definovaný oddělovač polí) a výsledek utřepe do pole v druhém parametru.

Jinak je to hnidopišina a awk snese hodně, ale začínat řádek středníkem je celkem nekonvenční.
petka avatar 14.2.2009 17:22 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: top > awk > rrdtool

uz jsem to poresil , stacilo vyhazet \x27

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.