Как да проверите използването на паметта за процес в Linux

How Check Memory Usage Per Process Linux



В наши дни компютърът може да изпълнява много програми едновременно. Процесорът няма проблем с обработката на всички тези програми, тъй като процесорите имат множество ядра за работа с много задачи.

Всяка от тези програми работи като един или повече процеси. Всеки процес отделя известно количество RAM или памет за себе си. Важно е процесът да функционира правилно. Ако процесът не успее да разпредели достатъчно RAM или памет, процесът не може да бъде създаден и програмата няма да може да стартира.







Така че, една от основните задачи, които правите на вашия компютър, е да проверите колко памет или RAM (памет с произволен достъп) използва всеки от процеса. Защото RAM или паметта на вашия компютър са ограничени.



Представете си случай, в който искате да стартирате някаква програма и тя се провали, защото нямате достатъчно памет. Може би някои от процесите използват много памет, която не ви е необходима в момента. Можете да убиете или спрете тези процеси, за да освободите RAM или памет, така че да можете да стартирате важните си програми.



В тази статия ще ви покажа как да проверите използването на паметта на всеки от процесите, работещи на вашата Linux машина. Ще използвам Debian 9 Stretch за всички демонстрации в тази статия. Но трябва да работи на всички съвременни дистрибуции на Linux. Да започваме.





Можете да използвате пс команда за проверка на използването на паметта на всички процеси в Linux. Има един проблем с тази процедура. пс всъщност не ви показва колко памет използва процес във формат KB или MB, но ще ви покаже колко памет се използва в проценти.

Можете да проверите използването на паметта (в проценти) на целия процес, изпълнен във вашата операционна система Linux, със следната команда:



$пс -илиpid, потребител,%мем,командабрадва| вид -b -k3 -r

Както можете да видите, всички процеси с използване на паметта в проценти са изброени в низходящ ред (Процесите, използващи по -голямата част от паметта, са изброени първо).

Проверка на използването на паметта на процесите с pmap:

Можете да проверите паметта на процес или набор от процеси в четим от човека формат (в KB или килобайта) с pmap команда. Всичко, от което се нуждаете, е PID на процесите, за които искате да проверите използването на паметта.

Да речем, че искате да проверите колко памет използва процесът с PID 917. За да направите това, бягайте pmap както следва:

$sudopmap917

Както можете да видите, общата памет, използвана от процеса 917, е 516104 KB или килобайта. Тук също можете да видите колко памет използват библиотеките и другите файлове, необходими за стартиране на процеса с PID 917.

Ако не ви пука колко памет използват библиотеките или други зависими файлове, стартирайте pmap както следва:

$sudopmap917 | опашка 1

Както можете да видите, на екрана се отпечатва само общата памет, използвана от процеса с PID 917.

Ако искате, можете допълнително да филтрирате това с awk и да получите само размера в KB или килобайта. За да направите това, бягайте pmap както следва:

$sudopmap917 | опашка 1 | awk ' / [0-9] K / {отпечатайте $ 2}'

Както можете да видите, се отпечатва само използването на паметта в KB или килобайта.

Сега можете също да изброите колко памет се използва от множество процеси, използващи техните PID pmap както следва:

$sudopmap917 531 | захващанеобща сума

ЗАБЕЛЕЖКА: Тук 917 и 531 са идентификатори на процеси или PID. По този начин можете да поставите колкото искате PID.

Използване на pmap за изброяване на използването на паметта на всички процеси в килобайти:

В този раздел ще ви покажа как да напишете свой собствен скрипт за черупка, за да изброите използването на паметта на всички процеси, изпълнявани на вашата операционна система Linux, в четим от човека формат (килобайти или KB).

Първо направете нов файл sysmon в текущата ви работна директория със следната команда:

$докосванеsysmon

Сега направете файла изпълним със следната команда:

$chmod+x sysmon

sysmon е скриптът на обвивката, който ще показва всички работещи процеси PID , СОБСТВЕНИК , ПАМЕТ (в KB в низходящ ред) и КОМАНДА . Да започваме.

Отвори sysmon скрипт с любимия ви текстов редактор, който ще използвам Кейт .

Сега първата команда, която ще изпълня, ще ми даде PID , СОБСТВЕНИК и КОМАНДА от всички работещи процеси, разделени със символ двоеточие (:) и го съхранявайте в RAWIN променлива. След това преминете през изхода и го отпечатайте на екрана.

Както можете да видите, получавам правилния изход.

Сега е време да обработим всеки ред, да съхраняваме информация, разделена с двоеточие, в отделни променливи. Това направих на ред 7, 8 и 9.

Както виждате, мога да отпечатвам PID , СОБСТВЕНИК и КОМАНДА в моя собствен формат сега.

Сега е време да извлечем използването на паметта на всеки PID. Ред 10 прави точно това.

Както можете да видите, всичко работи перфектно. Сега мога да отпечатам и използването на паметта на всеки процес в килобайти (KB).

Сега остава само да форматирате изхода, за да изглежда добре. Предпочитам формата на таблицата. Ред 5 отпечатва заглавката на всяка колона от таблицата.

Накрая отпечатах PID , СОБСТВЕНИК , ПАМЕТ (в KB) и КОМАНДА на всеки процес в табличен формат, използвайки ред 14.

Както можете да видите, работи доста добре. Има обаче малък проблем, процесите не са правилно сортирани в низходящ ред според използването на паметта.

За да поправя това, го премахнах сортиране -bnr -k3 от ред 3 и опакова всичко в черупка функция sysmon_main () . След това остави задачата за сортиране на вид команда.

Окончателният скрипт на черупката изглежда така:

Както можете да видите, работи чудесно.

Сега можете да го преместите някъде като /usr/bin и го изпълнете точно както другите команди, както следва:

$sudo mv -vsysmon/usr/съм

Изпълнение sysmon :

Благодаря, че прочетохте тази статия.