Come controllare l'utilizzo della memoria per processo su Linux

Come controllare l'utilizzo della memoria per processo su Linux

In questi giorni, un computer può eseguire molti programmi contemporaneamente. La CPU non ha problemi a gestire tutti questi programmi perché le CPU hanno più core per gestire il multi-tasking.

Ognuno di questi programmi funziona come uno o più processi. Ogni processo assegna una certa quantità di RAM o memoria per se stesso. È essenziale che il processo funzioni correttamente. 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 avviare.

Quindi, una delle attività di base che fai sul tuo computer è controllare quanta memoria o RAM (memoria di accesso casuale) ciascuno del processo sta utilizzando. 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. Potrebbe essere alcuni dei processi che utilizzano molta memoria di cui non hai bisogno in questo momento. Puoi uccidere o fermare questi processi per liberare la RAM o la memoria, in modo da poter iniziare i tuoi programmi importanti.

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

Controllo dell'utilizzo della memoria usando il comando PS:

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 mostrarti 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 sistema operativo Linux con il seguente comando:

$ ps -o pid, utente,%mem, ascia di comando | sort -b -k3 -r

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

Controllo dell'utilizzo della memoria dei processi con PMAP:

È possibile controllare la memoria di un processo o una serie di processi in formato leggibile umano (in KB o kilobyte) con pMAP comando. Tutto ciò di cui hai bisogno è il PID dei processi di cui si desidera controllare l'utilizzo della memoria.

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

$ sudo pMap 917

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

Se non ti interessa quanta memoria stanno utilizzando le librerie o altri file dipendenti, esegui pMAP come segue:

$ sudo pMap 917 | coda -n 1

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

Se vuoi, puoi filtrare ulteriormente questo con Awk e ottenere solo le dimensioni in KB o Kilobytes. Per farlo, corri pMAP come segue:

$ sudo pMap 917 | Tail -N 1 | awk '/[0-9] k/stampa $ 2'

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

Ora puoi anche elencare quanta memoria viene utilizzata da più processi usando i loro PID con pMAP come segue:

$ sudo pMap 917 531 | Grep totale

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

Utilizzando 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 formato leggibile umano (Kilobyte o KB).

Prima crea un nuovo file Sysmon Nella tua attuale directory di lavoro con il seguente comando:

$ touch sysmon

Ora rendere eseguibile il file con il seguente comando:

$ chmod +x sysmon

Sysmon è lo script 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, userò Kate.

Ora, il primo comando che sto per eseguire mi darà il Pid, PROPRIETARIO E COMANDO di tutti i processi di esecuzione separati dal colon (:) simbolo e archivialo nel Rawin variabile. Quindi analizza attraverso l'output e stampalo sullo schermo.

Come puoi vedere, sto ottenendo l'output corretto.

Ora è il momento di elaborare ogni riga, archiviare le informazioni delimitate del colon in variabili separate. Questo è quello che ho fatto sulla riga 7, 8 e 9.

Come puoi vedere, posso stampare Pid, PROPRIETARIO E COMANDO Nel mio formato adesso.

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

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

Ora tutto ciò che resta da fare è formattare l'output per sembrare bello. Preferisco il formato della tabella. La riga 5 stampa l'intestazione di ogni colonna della tabella.

Finalmente ho stampato Pid, PROPRIETARIO, MEMORIA (in KB) e COMANDO di ciascun processo in un formato tabulare usando la linea 14.

Come puoi vedere, funziona un po 'bene. C'è un po 'di problema, tuttavia, i processi non sono correttamente ordinati in ordine decrescente per utilizzo della memoria.

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

Lo script di shell finale assomiglia a questo:

Come puoi vedere, funziona alla grande.

Ora puoi spostarlo in un posto come /usr/cestino ed eseguilo proprio come altri comandi come segue:

$ sudo mv -v sysmon /usr /bin

Esecuzione Sysmon:

Grazie per aver letto questo articolo.