Come controllare l'utilizzo della memoria per processo su Linux

How Check Memory Usage Per Process Linux

Al giorno d'oggi, un computer può eseguire molti programmi contemporaneamente. La CPU non ha problemi a gestire tutti questi programmi perché ha più core per gestire il multitasking.

Ciascuno di questi programmi viene eseguito come uno o più processi. Ogni processo alloca una certa quantità di RAM o memoria per se stesso. È essenziale per il corretto funzionamento del processo. Se un processo non riesce ad allocare abbastanza RAM o memoria, il processo non può essere creato e il programma non sarà in grado di avviarsi.



Quindi, una delle attività di base che svolgi sul tuo computer è controllare la quantità di memoria o RAM (Random Access Memory) utilizzata da ciascun processo. Perché la RAM o la memoria del tuo computer sono limitate.



Immagina un caso in cui vuoi eseguire un programma e fallisce perché non hai abbastanza memoria. Potrebbero essere alcuni dei processi che utilizzano molta memoria che non ti serve in questo momento. Puoi uccidere o interrompere questi processi per liberare RAM o memoria, in modo da poter avviare i tuoi programmi importanti.



In questo articolo, ti mostrerò come controllare l'utilizzo della memoria di ciascuno dei processi in esecuzione sulla tua macchina Linux. Userò Debian 9 Stretch per tutta la dimostrazione in questo articolo. Ma dovrebbe funzionare su qualsiasi moderna distribuzione Linux. Iniziamo.

Puoi usare il ps comando per controllare l'utilizzo della memoria di tutti i processi su Linux. C'è un problema con questa procedura. ps non ti mostra davvero quanta memoria utilizza un processo in formato KB o MB, ma ti mostrerà quanta memoria viene utilizzata in percentuale.

Puoi controllare l'utilizzo della memoria (in percentuale) di tutto il processo in esecuzione sul tuo sistema operativo Linux con il seguente comando:



$ps -opid, utente,%meme,comandoascia| ordinare -B -k3 -R

Come puoi vedere, tutti i processi con utilizzo della memoria in percentuale sono elencati in ordine decrescente (i processi che utilizzano la maggior parte della memoria sono elencati per primi).

Verifica dell'utilizzo della memoria dei processi con pmap:

È possibile controllare la memoria di un processo o di un insieme di processi in formato leggibile dall'uomo (in KB o kilobyte) con pma comando. Tutto ciò di cui hai bisogno è il PID dei processi di cui vuoi controllare l'utilizzo della memoria.

Diciamo che vuoi controllare quanta memoria sta usando il processo con PID 917. Per farlo, corri pma come segue:

$sudopma917

Come puoi vedere, la memoria totale utilizzata dal processo 917 è 516104 KB o kilobyte. Puoi anche vedere quanta memoria stanno usando anche le librerie e altri file necessari per eseguire il processo con PID 917.

Se non ti interessa la quantità di memoria utilizzata dalle librerie o da altri file dipendenti, esegui pma come segue:

$sudopma917 | coda -n 1

Come puoi vedere, sullo schermo viene stampata solo la memoria totale utilizzata dal processo con PID 917.

Se vuoi, puoi filtrare ulteriormente questo con awk e ottieni solo la dimensione in KB o kilobyte. Per farlo, corri pma come segue:

$sudopma917 | coda -n 1 | awk '/ [0-9] K / {stampa $ 2}'

Come puoi vedere, viene stampato solo l'utilizzo della memoria in KB o kilobyte.

Ora puoi anche elencare la quantità di memoria utilizzata da più processi utilizzando i loro PID con pma come segue:

$sudopma917 531 | presatotale

NOTA: Qui 917 e 531 sono ID di processo o PID. Puoi inserire tutti i PID che vuoi in questo modo.

Utilizzo di pmap per elencare l'utilizzo della memoria di tutti i processi in kilobyte:

In questa sezione, ti mostrerò come scrivere il tuo script di shell per elencare l'utilizzo della memoria di tutti i processi in esecuzione sul tuo sistema operativo Linux in un formato leggibile dall'uomo (kilobyte o KB).

Prima crea un nuovo file sysmon nella tua directory di lavoro corrente con il seguente comando:

$toccosysmon

Ora rendi eseguibile il file con il seguente comando:

$chmod+x sysmon

sysmon è lo script di shell che visualizzerà tutti i processi in esecuzione PID , PROPRIETARIO , MEMORIA (in KB in ordine decrescente) e COMANDO . Iniziamo.

Apri il sysmon script con il tuo editor di testo preferito, che userò Kate .

Ora, il primo comando che eseguirò mi darà il PID , PROPRIETARIO e COMANDO di tutti i processi in esecuzione separati dal simbolo dei due punti (:) e memorizzarlo nel RAWIN variabile. Quindi scorrere l'output e stamparlo sullo schermo.

Come puoi vedere, sto ottenendo l'output corretto.

Ora è il momento di elaborare ogni riga, memorizzare le informazioni delimitate da due punti in variabili separate. Questo è quello che ho fatto alle linee 7, 8 e 9.

Come puoi vedere, posso stampare PID , PROPRIETARIO e COMANDO nel mio formato ora.

Ora è il momento di recuperare l'utilizzo della memoria di ciascun PID. La riga 10 fa proprio questo.

Come puoi vedere, tutto funziona perfettamente. Ora posso stampare anche l'utilizzo della memoria di ciascun processo in kilobyte (KB).

Ora tutto ciò che resta da fare è formattare l'output in modo che abbia un bell'aspetto. Preferisco il formato tabella. La riga 5 stampa l'intestazione di ogni colonna della tabella.

Alla fine ho stampato PID , PROPRIETARIO , MEMORIA (in KB) e COMANDO di ciascun processo in formato tabellare utilizzando la riga 14.

Come puoi vedere, funziona abbastanza bene. Tuttavia, c'è un piccolo problema, i processi non sono ordinati correttamente in ordine decrescente in base all'utilizzo della memoria.

Per risolvere il problema, ho rimosso sort -bnr -k3 dalla riga 3 e avvolto tutto in una funzione shell sysmon_main() . Poi ha lasciato il lavoro di smistamento al ordinare comando.

Lo script finale della shell assomiglia a questo:

Come puoi vedere, funziona benissimo.

Ora puoi spostarlo da qualche parte come /usr/bin ed eseguilo proprio come gli altri comandi come segue:

$sudo mv -vsysmon/usr/sono

in esecuzione sysmon :

Grazie per aver letto questo articolo.