|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
problema con grep e top
Ciao a tutti,
devo scrivere uno scriptino che ogni tot secondi scriva in un file l'ora corrente e l'uso di cpu se scrivo Codice:
top | grep Cpu Codice:
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 98.5%id, 1.0%wa, 0.0%hi, 0.2%si, 0.0%st Codice:
top | grep Cpu | cut -b 10-14
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Codice:
w -u | cut -sd, -f4,6,8 Codice:
gimli@altarf:~$ w -u | cut -sd, -f4,6,8 03,15,16 15 = carico percentuale medio degli ultimi 5 minuti (-f6) 16 = carico percentuale medio degli ultimi 15 minuti (-f8)
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
dell'ultimo minuto? perchè a me servirebbe il carico ogni 5 secondi
cmq grazie mille!
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
no, ma non mi va bene il valore medio... devo proprio lavorare su top perchè devo prendere la percentuale corrente di uso di cpu da parte dello user
con questo comando prendo l'ora [code] top -n 1 | grep average | cut -c 20-28 [/code] c'è un modo per prendere sempre con un comando solo anche la terza riga, cioè quella dei timings di cpu che effettivamente mi interessano? devo avere come risultato un file del genere 22:31:46 0.0 22:31:51 22.7 22:31:56 34.9 22:32:01 20.4 22:32:06 20.1 22:32:11 21.7 22:32:16 21.2 22:32:21 20.8 22:32:26 18.8 22:32:31 21.0 22:32:36 21.1 22:32:41 17.6 cioè l'orario e il tempo di cpu associato... solo che se lo faccio con 2 grep separati mi andrebbe a capo ogni riga ottentendo una roba del genere, che non mi va bene purtroppo 22:31:46 0.0 22:31:51 22.7 22:31:56 34.9 22:32:01 20.4 22:32:06 20.1 22:32:11 21.7 22:32:16 21.2 22:32:21 20.8 22:32:26 18.8 22:32:31 21.0 22:32:36 21.1 22:32:41 17.6
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Uff, che pignolo!
![]() Così potrebbe andare? Codice:
echo 100 - `top -d0 -n1 | sed -e '/^Cpu(s):/!d' -e 's/.*ni,[^\ ]*//' -e 's/%.*$//'` | bc
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
echo "`date +%H:%M:%S` `top -n1|grep Cpu|awk '{print $2}'|sed s/,//g`"
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
grazie mille per l'aiuto che mi state dando
![]() i 2 comandi che mi avete dato sembrano funzionare molto bene, ma se li lanciate "a mano" a distanza di 5 secondi, il valore di cpu che vi stampa a voi cambia?? perchè a me rimane sempre lo stesso, anche se lo lancio 15 volte di seguito ![]()
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
che devo dire, in vita mia non ero mai accorto di sta cosa..
Il top nella prima paginata dice c....ate, hai ragione!
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
in alternativa potresti provare un tool per statistiche come il sar.
Oppure puoi fare 2 pagine di top e poi prendere solo la seconda pagina. Una cosa cosi': echo "`date +%H:%M:%S` `top -n2|grep Cpu|awk '{print $2}'|sed s/,//g|tail -1`"
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
argh! speravo di averla scampata usando sar... ma al mio prof non va bene...
mannaggia a me che non so usare le espressioni regolari... ora tento di studiarmele ben bene sar -u 4 5 restituisce i dati con questa sintassi (il 4 sta per 4 secondi tra una iterazione e l'altra, il 5 per il numero di iterazioni da fare) Codice:
Linux 2.6.27.5 (specweb_web) 09/13/2009 08:36:20 PM CPU %user %nice %system %iowait %steal %idle 08:36:24 PM all 2.74 0.00 0.25 0.00 0.00 97.01 08:36:28 PM all 0.75 0.00 0.25 0.00 0.00 99.00 08:36:32 PM all 3.00 0.00 0.75 0.00 0.00 96.25 08:36:36 PM all 0.00 0.00 0.25 2.00 0.00 97.76 08:36:40 PM all 0.00 0.00 0.00 0.00 0.00 100.00 Average: all 1.30 0.00 0.30 0.40 0.00 98.00 mentre in un altro mi serve il tempo e la iowait al momento non ho proprio idea di come si faccia lol
__________________
C'era un moscerino sul tuo schermo Ultima modifica di Janky : 13-09-2009 alle 20:32. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
ok con
Codice:
echo "`sar -u 2 4|grep M|awk '{print $1 $4+$6}'|sed 1d`" così mi stampa 10:03:231 10:03:254.52 10:03:270 10:03:294.5 al posto di 10:03:23 1 10:03:25 4.52 10:03:27 0 10:03:29 4.5
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Codice:
sar -u 2 4 | awk '/AM|PM/{ if(FNR>3) print $1" "$2" "$4+$6}'
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
grazie mille!!
mi sono accorto di una cosa... sar visualizza solo PM, se l'ora è minore di 12 non visualizza AM in ogni caso non mi interessa che stampi anche average, quindi mi può bastare Codice:
sar -u 2 4 | awk '{ if(FNR>3) print $1" "$4+$6}'
__________________
C'era un moscerino sul tuo schermo |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Feb 2004
Città: Lecco/Milano
Messaggi: 2863
|
mannaggia a sar...
purtroppo il fatto del PM/AM è un bug bello grosso... se l'ora è minore di 12 come ho detto prima, non viene stampato AM, quindi i campi che mi interessa sommare sono $3 e $5 se invece l'ora è maggiore di 12 viene stampato PM, quindi i dati che devo sommare diventano il $3 e il $6!!! mannaggia come posso fare?? edit: risolto con sed s/PM//
__________________
C'era un moscerino sul tuo schermo Ultima modifica di Janky : 14-09-2009 alle 17:40. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:48.