Com es comprova l'ús de la memòria per procés a Linux

How Check Memory Usage Per Process Linux



Actualment, un ordinador pot executar molts programes alhora. La CPU no té problemes per gestionar tots aquests programes perquè la CPU té diversos nuclis per gestionar la tasca múltiple.

Cadascun d'aquests programes s'executa com un o més processos. Cada procés assigna una quantitat de memòria RAM o memòria per si mateix. És fonamental perquè el procés funcioni correctament. Si un procés no assigna prou memòria RAM o memòria, el procés no es podrà crear i el programa no podrà iniciar-se.







Per tant, una de les tasques bàsiques que feu a l’ordinador és comprovar la quantitat de memòria o memòria RAM (memòria d’accés aleatori) que fa servir cada procés. Com que la memòria RAM o la memòria de l’ordinador és limitada.



Imagineu un cas en què vulgueu executar algun programa i falla perquè no teniu prou memòria. Pot ser que alguns processos estiguin utilitzant molta memòria que ara no necessiteu. Podeu matar o aturar aquests processos per alliberar memòria RAM o memòria, de manera que pugueu iniciar els vostres programes importants.



En aquest article, us mostraré com comprovar l’ús de memòria de cadascun dels processos que s’executen a la vostra màquina Linux. Utilitzaré Debian 9 Stretch per a tota la demostració d’aquest article. Però hauria de funcionar en qualsevol distribució moderna de Linux. Comencem.





Podeu utilitzar el fitxer ps ordre per comprovar l'ús de la memòria de tots els processos a Linux. Hi ha un problema amb aquest procediment. ps en realitat no us mostra quanta memòria fa servir un procés en format KB o MB, però us mostrarà quanta memòria s’utilitza en percentatge.

Podeu comprovar l’ús de la memòria (en percentatge) de tot el procés que s’executa al vostre sistema operatiu Linux amb l’ordre següent:



$ps -opid, usuari,%meme,comandamentdestral| ordenar -b -k3 -r

Com podeu veure, tots els processos amb ús de memòria en percentatge s’enumeren en ordre descendent (els processos que fan servir la major part de la memòria s’enumeren primer).

Comprovació de l’ús de memòria dels processos amb pmap:

Podeu comprovar la memòria d'un procés o d'un conjunt de processos en format llegible per humans (en KB o kilobytes) amb pmap comandament. Tot el que necessiteu és el PID dels processos dels quals voleu comprovar l’ús de la memòria.

Diguem que voleu comprovar la quantitat de memòria que utilitza el procés amb PID 917. Per fer-ho, corre pmap com segueix:

$suopmap917

Com podeu veure, la memòria total utilitzada pel procés 917 és de 516104 KB o kilobytes. Aquí també podeu veure la quantitat de memòria que fan servir les biblioteques i altres fitxers necessaris per executar el procés amb PID 917.

Si no us importa la quantitat de memòria que fan servir les biblioteques o altres fitxers dependents, executeu pmap com segueix:

$suopmap917 | cua -n 1

Com podeu veure, només s’imprimeix a la pantalla la memòria total utilitzada pel procés amb PID 917.

Si voleu, podeu filtrar-ho amb awk i obtingueu només la mida en KB o en kilobytes. Per fer-ho, corre pmap com segueix:

$suopmap917 | cua -n 1 | awk '/ [0-9] K / {imprimeix 2 $}'

Com podeu veure, només s’imprimeix l’ús de memòria en KB o kilobytes.

Ara també podeu enumerar la quantitat de memòria que utilitzen diversos processos amb els seus PID pmap com segueix:

$suopmap917 531 | adherènciatotal

NOTA: Aquí 917 i 531 són ID de procés o PID. Podeu posar tants PID com vulgueu d’aquesta manera.

Utilitzant pmap per llistar l'ús de la memòria de tots els processos en quilobytes:

En aquesta secció, us mostraré com escriure el vostre propi script shell per llistar l’ús de memòria de tots els processos que s’executen al vostre sistema operatiu Linux en format llegible per humans (kilobytes o KB).

Primer feu un fitxer nou sysmon al directori de treball actual amb l'ordre següent:

$tocarsysmon

Ara feu que el fitxer sigui executable amb l'ordre següent:

$chmod+ x sysmon

sysmon és l'script d'intèrpret d'ordres que mostrarà tots els processos en execució PID , PROPIETARI , MEMORYRIA (en KB en ordre descendent) i COMANDAMENT . Comencem.

Obriu el fitxer sysmon utilitzarà el vostre script amb el vostre editor de text preferit Kate .

Ara, la primera ordre que executaré em donarà el fitxer PID , PROPIETARI i COMANDAMENT de tots els processos en execució separats pel símbol dos punts (:) i emmagatzemar-lo al fitxer RAWIN variable. A continuació, passeu per la sortida i imprimiu-la a la pantalla.

Com podeu veure, obtinc la sortida correcta.

Ara és hora de processar cada línia, emmagatzemar la informació delimitada per dos punts en variables separades. Això és el que vaig fer a les línies 7, 8 i 9.

Com podeu veure, puc imprimir PID , PROPIETARI i COMANDAMENT en el meu propi format ara.

Ara és hora d’obtenir l’ús de memòria de cada PID. La línia 10 ho fa exactament.

Com podeu veure, tot funciona perfectament. Ara també puc imprimir l’ús de memòria de cada procés en quilobytes (KB).

Ara només queda formatar la sortida perquè sembli agradable. Prefereixo el format de taula. La línia 5 imprimeix la capçalera de cada columna de la taula.

Finalment, vaig imprimir PID , PROPIETARI , MEMORYRIA (en KB) i COMANDAMENT de cada procés en format tabular mitjançant la línia 14.

Com podeu veure, funciona bastant bé. Hi ha una mica de problema, però, els processos no s’ordenen correctament en ordre descendent segons l’ús de la memòria.

Per solucionar-ho, l’he eliminat ordenar -bnr -k3 de la línia 3 i ho va embolicar tot en una funció de shell sysmon_main () . Després va deixar la tasca de classificació al fitxer ordenar comandament.

El guió final de l'intèrpret d'ordres té un aspecte així:

Com podeu veure, funciona molt bé.

Ara el podeu moure a un lloc com / usr / bin i executeu-lo igual que altres ordres de la següent manera:

$suo mv -vsysmon/usr/sóc

S'està executant sysmon :

Gràcies per llegir aquest article.