Всяка от тези програми работи като един или повече процеси. Всеки процес отделя известно количество 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 :
Благодаря, че прочетохте тази статия.