[CLI] Quanta ram usa un processo
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
[CLI] Quanta ram usa un processo
Salve a tutti... sto cercando di creare uno script che controlli quanta ram usa un programma (fatto in casa da un programmatore) che secondo me si blocca quando raggiunge una certa quantità di ram, ma non riesco mai a scovarlo sul fatto.
Esiste un comando da terminale per sapere il singolo processo quanto sta "succhiando"?
Qualcosa che mi ritorna solo il numero dei MB nudo e crudo
Grazie
Rino
Esiste un comando da terminale per sapere il singolo processo quanto sta "succhiando"?
Qualcosa che mi ritorna solo il numero dei MB nudo e crudo
Grazie
Rino
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
- woddy68
- Rampante Reduce
- Messaggi: 8642
- Iscrizione: sabato 12 febbraio 2011, 14:23
- Desktop: Kde Plasma5
- Distribuzione: openSUSE Tumbleweed - KDE Neon
- Sesso: Maschile
Re: [CLI] Quanta ram usa un processo
Un qualsiasi monitor di sistema può dirtelo.
Ad esempio il lettore multimediale Elisa nel mio monitor di sistema segnala che usa 173.964.
Come puoi vedere qui sotto...
Da terminale puoi usare top.
Ad esempio il lettore multimediale Elisa nel mio monitor di sistema segnala che usa 173.964.
Come puoi vedere qui sotto...
Da terminale puoi usare top.
Desktop - DELL Optiplex 7010 - Notebook HP 250
-Ho sempre accettato caramelle dagli sconosciuti-
-Ho sempre accettato caramelle dagli sconosciuti-
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
Re: [CLI] Quanta ram usa un processo
Scusa ma così non ottengo ciò che mi serve. Io ho bisogno di un qualcosa (se esiste ovviamente) che da terminale (Command line utilizzabile con bash) mi ritorni solo il numero di MB usati solo dal processo interessato.
Magari lo fa top, ma io non saprei farlo. Immagina di fare uno script che se il processo firefox supera 1000MB mi manda una mail.
Quel 1000 come lo ricavo?
Grazie
Rino
Magari lo fa top, ma io non saprei farlo. Immagina di fare uno script che se il processo firefox supera 1000MB mi manda una mail.
Quel 1000 come lo ricavo?
Grazie
Rino
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
- woddy68
- Rampante Reduce
- Messaggi: 8642
- Iscrizione: sabato 12 febbraio 2011, 14:23
- Desktop: Kde Plasma5
- Distribuzione: openSUSE Tumbleweed - KDE Neon
- Sesso: Maschile
Re: [CLI] Quanta ram usa un processo
Le mie competenze in fatto di script sono minime, per cui passo...immagino che un modo ci sia.
Desktop - DELL Optiplex 7010 - Notebook HP 250
-Ho sempre accettato caramelle dagli sconosciuti-
-Ho sempre accettato caramelle dagli sconosciuti-
- DoctorStrange
- Imperturbabile Insigne
- Messaggi: 2854
- Iscrizione: mercoledì 14 ottobre 2015, 9:33
- Desktop: Gnome3
- Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
- Sesso: Maschile
- Località: Roma, Italia
Re: [CLI] Quanta ram usa un processo
Secondo me lo puoi fare con il solito vecchio conky. Avresti una scritta perennemente sul monitor che ti indica quante risorse impiega quello specifico processo e, se vuoi, puoi impostare un allarme in modo che ti arrivi l'email, ogni volta che il limite venga superato.
Se non conosci conky, guarda su internet che troverai tute le informazioni che cerchi.
Saluti
Se non conosci conky, guarda su internet che troverai tute le informazioni che cerchi.
Saluti
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
Re: [CLI] Quanta ram usa un processo
No no conosco conky... ma necessitavo di qualcosa da mettere in uno script.
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
-
- Imperturbabile Insigne
- Messaggi: 2842
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [CLI] Quanta ram usa un processo
Hai già provato a usare pmap?. Non so quanto sia preciso (cioè se riporta la memoria fisica preallocata o quella effettivamente usata dai processi)
Il comando pmap richiede il pid del processo in questione, che ricavi con
nell'output di pmap quello che ti interessa, cioè il totale, sta nell'ultima linea ed è espresso in kB quindi se vuoi "il numero dei MB nudo e crudo" si può usare awk in questo modo:
Valuta tu se ha il livello di precisione di cui hai bisogno. Altrimenti, hai bisogno di eseguire il programma all'interno di un profiler (sicuramente con scadimento di performance) e comunque in questo caso non ti potrei aiutare.pmap - report memory map of a process
Il comando pmap richiede il pid del processo in questione, che ricavi con
Codice: Seleziona tutto
pgrep 'nome_del_programma'
Codice: Seleziona tutto
pmap $(pgrep 'nome_del_programma') | awk '/total/ {print $2/1000}'
Re: [CLI] Quanta ram usa un processo
Ma quale script?! basta una riga:
Ovviamente il grep lo devi puntare sul processo che vuoi monitorare (questo è un esempio). Inoltre bisognerebbe aggiungere qualche opzione per formattare meglio il log file prodotto. Lo puoi temporizzare per non salvarti vagonate di righe. Eccetera, eccetera...
Però @rinosan_76 quello che chiedi, a riga di comando, in linea di principio dovrebbe essere questo.
Codice: Seleziona tutto
top | grep --line-buffered "systemd" >> pippo.txt
Però @rinosan_76 quello che chiedi, a riga di comando, in linea di principio dovrebbe essere questo.
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
Re: [CLI] Quanta ram usa un processo
Ok almeno abbiamo fatto un passo avanti...
@rai
ho provato a vedere firefox quanto consuma e il monitor di sistema mi da 542MB mentre il tuo comando 4190 (credo MB) cosa mi sfugge?
@korda
Lo script che mi serve non è per sapere quanti MB consuma ma in base a questo dato lo script farà cose... giusto per capirci, quindi non posso usare il monitor di sistema...
Il tuo comando mi riporta questo:
3010 user 20 0 4206108 542552 173388 S 0,3 6,8 96:16.41 firefox
continuando a stampare più righe. Ma in questo caso il risultato non è il numero dei MB usati, ma la riga di top che riguarda firefox.
@rai
ho provato a vedere firefox quanto consuma e il monitor di sistema mi da 542MB mentre il tuo comando 4190 (credo MB) cosa mi sfugge?
@korda
Lo script che mi serve non è per sapere quanti MB consuma ma in base a questo dato lo script farà cose... giusto per capirci, quindi non posso usare il monitor di sistema...
Il tuo comando mi riporta questo:
3010 user 20 0 4206108 542552 173388 S 0,3 6,8 96:16.41 firefox
continuando a stampare più righe. Ma in questo caso il risultato non è il numero dei MB usati, ma la riga di top che riguarda firefox.
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
Re: [CLI] Quanta ram usa un processo
Non ho capito... vuoi fai a far fare allo script delle azioni in base al consumo della RAM. Ma se non la monitori come fai a decidere?rinosan_76 ha scritto: ↑venerdì 23 luglio 2021, 13:43Ok almeno abbiamo fatto un passo avanti...
@rai
ho provato a vedere firefox quanto consuma e il monitor di sistema mi da 542MB mentre il tuo comando 4190 (credo MB) cosa mi sfugge?
@korda
Lo script che mi serve non è per sapere quanti MB consuma ma in base a questo dato lo script farà cose... giusto per capirci, quindi non posso usare il monitor di sistema...
Il tuo comando mi riporta questo:
3010 user 20 0 4206108 542552 173388 S 0,3 6,8 96:16.41 firefox
continuando a stampare più righe. Ma in questo caso il risultato non è il numero dei MB usati, ma la riga di top che riguarda firefox.
Io ho risposto a questo, specificamente:
In ogni caso top dà la stessa cosa del monitor di sistema:rinosan_76 ha scritto: ↑giovedì 22 luglio 2021, 14:11Scusa ma così non ottengo ciò che mi serve. Io ho bisogno di un qualcosa (se esiste ovviamente) che da terminale (Command line utilizzabile con bash) mi ritorni solo il numero di MB usati solo dal processo interessato.
Magari lo fa top, ma io non saprei farlo. Immagina di fare uno script che se il processo firefox supera 1000MB mi manda una mail.
Quel 1000 come lo ricavo?
Grazie
Rino
3010 user 20 0 4206108 542552 173388 S 0,3 6,8 96:16.41 firefox
Le colonne di top indicano, rispettivamente:
PID: l'id del processo attivo.
USER: l'utente che ha lanciato il processo.
PR: indica la priorità dell'attività.
NI: indica l’indice del processo. Un valore positivo negativo indica una priorità più elevata, mentre un valore positivo positivo indica una priorità inferiore.
VIRT: il valore complessivo di memoria virtuale utilizzata.
RES: la quantità di memoria residente utilizzata.
SHR: rappresenta la dimensione della memoria condivisa (kb) utilizzata da un'attività.
S: Lo stato di una attività. I valori possibili sono S (sleeping), D (uninterruptible sleep), R (running), Z (zombies), o T (stopped or traced).
%CPU: Percentuale di CPU utilizzata da un'attività.
%MEM: Percentuale RAM utilizzata da un'attività.
TIME+: il tempo totale di CPU utilizzata
COMMAND: Il comando utilizzato per creare il processo
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
Re: [CLI] Quanta ram usa un processo
ok perfetto diciamo che usiamo top. Top però non mi da come risultato un numero da poter mettere in una variabile e poi valutare. Mi torna una serie di stringhe composte da quella roba che hai elencato. In più top si avvia e non si ferma ad un risultato.
il mio script sarà una cosa simile:
il mio script sarà una cosa simile:
Codice: Seleziona tutto
#! /bin/bash
MAXRAM=10
controlli miei
faccio cose mie
MB= $(comando che mi ritorna numero)
if( $MB -gt $MAXRAM)
then
faccio cose
else
faccio altre cose
fi
exit 0
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
-
- Imperturbabile Insigne
- Messaggi: 2842
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [CLI] Quanta ram usa un processo
Sì il calcolo della memoria usata non è univoco, se vedi in rete ci sono diversi discorsi a proposito.ho provato a vedere firefox quanto consuma e il monitor di sistema mi da 542MB mentre il tuo comando 4190 (credo MB) cosa mi sfugge?
A partire da rilievi più grossolani: se nel mio monitor di sistema scrivo "firefox" oltre alla riga del browser propriamente detto mi vengono listate altri processi che sommati tra loro impegnano la stessa RAM del browser.
Parte delle incongruenze derivano anche dell'annosa questione dell'unità di misura: almeno il mio monitor di sistema (ksysguard) usa KiB e MiB quindi il valore riportato è inferiore di un fattore 1024 a quello che sarebbe in KB e MB
Poi pmap ti fa il totale della memoria usata da tuuutte le librerie usate dal processo che stai valutando e quindi giocoforza il risultato è maggiore. Per vederlo basta che esegui quel comando togliendo la redirezione ad awk
Comunque
se devi mettere top in uno script "meglio" usarlo con le opzioni -b e -n; poi ne mandi l'output ad awk per farti stampare la colonna di cui hai scelto di fidarti: $5 per VIRT, $6 per RES, $7 per SHR
esempio:
Codice: Seleziona tutto
top bn1 | awk '/nomedelprogramma/ {print $7}'
-
- Entusiasta Emergente
- Messaggi: 1374
- Iscrizione: sabato 18 marzo 2006, 13:41
Re: [CLI] Quanta ram usa un processo
Grazie provo a capirci qualcosa... io con pmap ricevo un dato che mi pare facile da gestire soprattutto se corretto
Tu quale approccio mi consigli?
Tu quale approccio mi consigli?
La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas. [Francisco Goya]
http://www.mangioebevo.it
http://www.mangioebevo.it
-
- Imperturbabile Insigne
- Messaggi: 2842
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [CLI] Quanta ram usa un processo
non c'è sostanziale differenza nel modo di usare il dato che si sceglie, il punto è usare una misura che corrisponda a quello che serve.rinosan_76 ha scritto: ↑venerdì 23 luglio 2021, 22:39Grazie provo a capirci qualcosa... io con pmap ricevo un dato che mi pare facile da gestire soprattutto se corretto
Tu quale approccio mi consigli?
Se toccasse a me farei le cose seguenti in questo ordine:
· studiare la documentazione di pmap, top, ps, free etc.
· cercare le parole chiave per trovare risposta in rete
· come ultima ratio, cercare empiricamente quale dato, di quale tool corrisponde meglio alla RAM richiesta dal mio programma: per es. userei come riferimento quello che restituisce top come memoria totale impegnata durante l'esecuzione del programma e dopo averlo killato (nell'output di top è la riga che comincia con `MiB Mem :')
A questo punto, confronterei la differenza tra i due numeri (che sono in MiB) con il dato di pmap, con le colonne di top, etc e sceglierei per il mio script quello che ci si avvicina di più.
Per confrontare più facilmente i dati puoi eseguire questo (il risultato, sempre in MiB, é la differenza tra la memoria totale usata con programma in esecuzione e senza)
Codice: Seleziona tutto
echo $(nomeprogramma & sleep 5; LC_ALL=C top bn1 | awk '/ Mem :/ {print $8}') - $(pkill nomeprogramma ; LC_ALL=C top bn1 | awk '/ Mem :/ {print $8}') | bc
Chi c’è in linea
Visualizzano questa sezione: Bing [Bot], Google [Bot] e 22 ospiti