Salve, ed eccomi di nuovo qui XD

per prima cosa non è importante come quest altro script

giusto perchè in questi giorni non ho nulla da fare :) cmq io prima di chiedere cerco ed ho trovato per esempio:

         top -b -d1 -n1 | grep -i "Cpu(s)" | head -c21 | cut -d ' ' -f3 | cut -d '%' -f1 >file

in pratica il comando redirige loutput della percentuale d uso cpu nel documento "file" intanto mi fermo, se qualcuno ha voglia di aiutarmi poi modificando questo messaggio spiego cosa voglio/vorrei ottenere.

Grazie

ok dai, allora chiedo pardon, era giusto per non essere troppo ...

cmq è una cosa semplice ma non per me,mi spiego:

se la cpu lavora al 50% per un tot di tempo facciamo lavora per 10 minuti di fila al 50/60% vorrei far partire un comando metterci un avviso con notify-send oppure conoscendo il nome del processo che fa salire la cpu al 50/60% mettere in pausa per tot tempo il processo con pkill -stop nome_processo

chiesto 01 Lug '14, 13:50

Davide_74's gravatar image

Davide_74
617235571

modificato 04 Lug '14, 15:08

enzotib's gravatar image

enzotib ♦♦
14.0k112186

puoi spiegare meglio cosa vuoi ottenere? Comunque non è carino scrivere una domanda a metà, non trovi? :)

(01 Lug '14, 19:46) letizia letizia's gravatar image

Ma vuoi vedere l' uso della CPU dal terminale o ti può andare bene anche un' applicazione?

(01 Lug '14, 20:41) Mark Williams Mark%20Williams's gravatar image

allora niente da fare, nessuno mi vuole aiutare, fa anche rima. ma forse ho capito il perchè, un altra rima, perchè ho detto che non ho nulla da fare XD

Grazie cmq, alla prossima

(02 Lug '14, 22:44) Davide_74 Davide_74's gravatar image

okey, cosa ne dici di questo:

   top -b -d1 -n1 | gawk 'BEGIN{found="no";}{if ($1!= "PID" && found=="no") next; found="si"; if ($9 > 50.0) { print strftime("%Y-%m-%d %H:%M:%S") " pid = " $1 " proc = " $12 " cpu = " $9;}}'

potresti eseguirlo ogni 5 secondi ed appendere il risultato in un file, poi con un altro script verificare se lo stesso processo supera la percentuale di cpu per un certo tempo prima di inviare una notifica o prendere un provvedimento.

(03 Lug '14, 01:12) letizia letizia's gravatar image

Ciao e Grazie per la risposta, ho copiato ed incollato nel terminale il codice e mi diceva di installare "gawk" fatto riprovato e non vedo nessun risultato cioè il terminale termina ma nessuna risposta

di nuovo Grazie

(03 Lug '14, 07:33) Davide_74 Davide_74's gravatar image

okey, potrebbe dipendere dal fatto che io utilizzo lubuntu, puoi mettere nella domanda un esempio di output del comando

      top -b -d1 -n1
(03 Lug '14, 09:41) letizia letizia's gravatar image

scusa ma a cosa serve l esempio di output del comando top -b -d1 -n1 ?

quello che serve forse è nel tuo codice che a me non va, perchè servono un paio di istruzioni una che dice di prelevare il valore dell uso della cpu tra il 50/60% ed un altra che controlla se questo valore è continuo per tot minuti e se supera tot minuti esegue qualcosa una notifica oppure come già detto avviare un comando mettendo in pausa il processo colpevole.

Ciao di nuovo Grazie

(03 Lug '14, 11:47) Davide_74 Davide_74's gravatar image

Scusa, ho pensato che l'output del comando top potesse essere diverso.

Lo script elabora l'output del comando top e stampa una riga per ogni processo ha nella colonna CPU un valore maggiore a 50.0. Probabilmente non stampa perchè non ce ne sono.

Prova a modificare:

    if ($9 > 50.0)

con:

    if ($9 > 1.0)

e vediamo se produce dei risultati.

(03 Lug '14, 11:59) letizia letizia's gravatar image

se vuoi ti posto l output del comando "top -b -d1 -n1" ma è abbastanza lunghetto :(.

poi scusa una domanda, perchè prelevare una riga per ogni processo ? a me basta prelevare il totale dell uso della cpu tipo come il comando postato nella domanda. il mio problema è impostare i limiti cioè la percentuale del 50/60% e poi il limite di tempo.provo a modificare

(03 Lug '14, 12:13) Davide_74 Davide_74's gravatar image

provando a modificare ecco il risultato:

user@user:~$ top -b -d1 -n1 | gawk 'BEGIN{found="no";}{if ($1!= "PID" && found=="no") next; found="si"; if ($9 > 1.0) { print strftime("%Y-%m-%d %H:%M:%S") " pid = " $1 " proc = " $12 " cpu = " $9;}}' 2014-07-03 12:15:08 pid = 1967 proc = psensor cpu = 2 2014-07-03 12:15:08 pid = 6949 proc = kworker/u4:1 cpu = 2 user@user:~$

(03 Lug '14, 12:21) Davide_74 Davide_74's gravatar image

Pensavo ti servisse individuare il/i processi implicati nell'aumento del consumo della cpu. Se vuoi puoi anche aggiungere:

      top -b -d1 -n1 | gawk 'BEGIN{found="no";}{ if ($1 == "Cpu(s):") {total=$2; next;} if ($1!= "PID" && found=="no") next; found="si"; if ($9 >= 0.0) { print strftime("%Y-%m-%d %H:%M:%S") " pid = " $1 " proc = " $12 " cpu = " $9 " Total = " total; }}'

In modo da stampare il totale.

(03 Lug '14, 12:31) letizia letizia's gravatar image

Se questo script lo esegui a tempo, e l'output lo appendi in un file, questo può essere poi post-elaborato da un altro script che verifica se il Totale della cpu eccede un limite stabilito per un certo intervallo ed in tal caso hai anche già l'informazione di quali processi hanno causato l'incremento.

(03 Lug '14, 12:31) letizia letizia's gravatar image

"questo può essere poi post-elaborato da un altro script che verifica se il Totale della cpu eccede un limite stabilito per un certo intervallo"

ed è questo che non so come si fa :(

(03 Lug '14, 12:45) Davide_74 Davide_74's gravatar image

Allora, ecco un esempio (http://paste.ubuntu.com/7741579/) ho dovuto cambiare il primo per stampare il timestamp unix. Il secondo si lancia così:

  gawk -v MAXTIME=2000 -v CPUMAX=4.0 -f /tmp/prova.awk /tmp/prova.txt

suppponendo che in /tmp/prova.txt siano salvati gli output del primo script. Se hai dei dubbi usa man gawk. Ovviamente questa stessa implementazione può essere realizzata anche in bash, se è per te più facile.

(03 Lug '14, 13:45) letizia letizia's gravatar image

purtroppo @letizia sembra che non va, se incollo l output del secondo script non mi lascia poi cliccare/inviare il commento.

ecco l output:

gawk: /tmp/prova.awk:24: gawk: /tmp/prova.awk:24:

syntax error

(03 Lug '14, 17:28) Davide_74 Davide_74's gravatar image

scusa, facendo copia incolla ho perso una } come ultima riga

(03 Lug '14, 17:49) letizia letizia's gravatar image

aggiunta, non mi da errore, scusa ma non ho capito cosa dovrebbe fare il secondo script. :( :D

(03 Lug '14, 18:03) Davide_74 Davide_74's gravatar image

intanto che errore ti restituisce? Allora, con ordine: - supponiamo che il primo script sia eseguito ogni 5 sec e che il suo output sia appeso ad un file /tmp/prova.txt - Nel file prova.txt troverai delle righe che indicano: Timestamp Pid Proc Cpu TotalCpu esempio:

   1404385132 pid = 26900 proc = top cpu = 1.9 Total = 5.0%
   1404385151 pid = 26968 proc = top cpu = 1.9 Total = 5.0%
   1404385166 pid = 27006 proc = top cpu = 1.9 Total = 5.0%
   1404385176 pid = 27011 proc = top cpu = 1.9 Total = 5.0%
   1404385650 pid = 27492 proc = top cpu = 1.9 Total = 5.0%
(03 Lug '14, 18:15) letizia letizia's gravatar image

il secondo script lanciato con:

     gawk -v MAXTIME=2000 -v CPUMAX=4.0 -f /tmp/prova.awk /tmp/prova.txt

cerca se per 2000 secondi la cpu totale ha superato il 4.0% e nel caso sia così stampa le righe dell'intervallo. Nel tuo caso, al posto della stampa, vorrai forse eseguire un'altra operazione.

Se questo secondo script lo esegui ogni mezz'ora ecco che potrai verificare l'eventuale superamento dei parametri nella mezz'ora e produrre un segnale di allerta o quello che vuoi tu.

(03 Lug '14, 18:20) letizia letizia's gravatar image

il file prova:

1404400666 pid = 2735 proc = top cpu = 2 Total = 7.8%us, 1404400789 pid = 1280 proc = Xorg cpu = 67 Total = 6.9%us, 1404400789 pid = 1720 proc = compiz cpu = 4 Total = 6.9%us, 1404400789 pid = 1745 proc = nautilus cpu = 2 Total = 6.9%us,

è il secondo script che non capisco cosa dovrebbe fare

(03 Lug '14, 18:32) Davide_74 Davide_74's gravatar image

Individuare se per un certo tempo (stabilito da MAXTIME) la cpu totale è stata superiore al valore CPUMAX. Se incontra un intervallo con queste caratteristiche lo stampa. Qui http://pastebin.ubuntu.com/7742841/ ho riportato lo script un po' migliorato e spiegato per bene, prova a giocare con i valori dei parametri per vedere cosa restituisce. In genere quando si cerca di monitorare la cpu, si lavora in modo statistico, facendo delle "fotografie" a tempo della situazione (campioni) ottenuti con il primo script che ha una frequenza più rapida e poi elaborandole successivamente.

(03 Lug '14, 19:02) letizia letizia's gravatar image

pardon, dove lo stampa? invece di stampare io devo far partire un comando chiamando un script ed al suo interno ci metto quello che voglio, per prova ci metto "gedit" quindi se nel file prova.txt c'è scritto 5,6 ed il valore massimo è impostato a 4,0 dovrebbe partire gedit giusto ? magari per prova metto 30 secondi no 2000,poi ho cambiato cartella non /tmp che al riavvio mi cancella tutto :(

(03 Lug '14, 20:31) Davide_74 Davide_74's gravatar image

il comando awk print stampa sullo standard output, se vuoi eseguire gedit, devi usare la primitiva system("command"); dove command è un comando bash.

Se vuoi eseguire gedit, va bene, ma se vuoi lanciare gedit aprendo un file con l'esito dello script allora puoi fare così:

    gawk -v MAXTIME=20 -v CPUMAX=4.0 -f prova.awk prova.txt > esito; gedit esito
(03 Lug '14, 21:20) letizia letizia's gravatar image

eseguivo gedit giusto per prova.

se per esempio vorrei eseguire uno script con dentro notify-send "alert_cpu" && cvlc /media/user/Dati/Musica/beep-8.mp3.

cmq dai non è una cosa importante io butto la spugna.

Grazie di tutto ciao

(03 Lug '14, 22:30) Davide_74 Davide_74's gravatar image

okey, bye :)

(04 Lug '14, 00:14) letizia letizia's gravatar image

Ciao @enzotib, ho visto il tuo nome in questa discussione, credevo magari in un tuo commento con qualche soluzione magica :) invece no hai corretto la domanda. Grazie cmq

Ciao

(04 Lug '14, 18:48) Davide_74 Davide_74's gravatar image
Scrivi tu la prima risposta!
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×93

domanda posta: 01 Lug '14, 13:50

domanda visualizzata: 1,068 volte

ultimo aggiornamento: 04 Lug '14, 18:48

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.