2011-09-02 9 views
10

voglio vedere un determinato processo in UNIX nel corso del tempo per vedere ciò che la memoria tempo cresce (il suo un lavoro di corsa lunga)come monitorare un utilizzo della memoria dei processi nel corso del tempo - ubuntu

Credo che avrei potuto fare

ps -aux | grep PID 

ed eseguire questo da cron ogni 5 minuti, ma sembra che ci dovrebbe essere un modo migliore.

C'è un modo in cui posso usare sar per fare questo?

+0

la tua domanda appartiene a ubuntu o superuser –

+0

stavo pensando a questo, ma è da un punto di vista degli sviluppatori ed è un problema di sviluppo, il mio processo sta perdendo memoria, non sono un SA .... Credo di poter provare laggiù, ma sembra rilevante su entrambi ... – Joelio

+2

Duplicato su http://stackoverflow.com/questions/563168/monitor-a-programs-memory-usage-in-linux? Suggerisci anche di usare 'top' con le opzioni' -p -b -d'. – Iterator

risposta

21

utilizzo questa:

$ ps -o rss $(pgrep executablename) 

che mettere in un ciclo while oppure usa orologio per monitorare nel tempo accoppiato con coda. È anche possibile collegarlo a un file e fare in modo che gnuplot lo rappresenti e venga aggiornato ogni pochi secondi.

+0

Risposta errata. L'RSS non è l'utilizzo della memoria. – poige

+1

@poige, cosa intendi ?? - RSS Dimensioni della memoria reale (set residente) in kilobyte del processo. Questo numero è uguale alla somma del numero di pagine del segmento di lavoro e del segmento di codice nei tempi di memoria 4. Ricordare che le pagine del segmento di codice sono condivise tra tutte le istanze del programma attualmente in esecuzione. Se sono in esecuzione processi 26 ksh, solo una copia di una determinata pagina del programma eseguibile ksh sarà in memoria, ma il comando ps segnalerebbe la dimensione del segmento di codice come parte dell'RSS di ogni istanza del programma ksh. – Joelio

+0

Il processo può essere scambiato (paginato) in parte, e il suo RSS sarebbe di meno, in realtà. – poige

Problemi correlati