Всяка от тези програми се изпълнява като един или повече процеси. Всеки процес отделя известно количество RAM или памет за себе си. От съществено значение е процесът да функционира правилно. Ако процесът не успее да разпредели достатъчно RAM или памет, тогава процесът не може да бъде създаден и програмата няма да може да се стартира.
И така, една от основните задачи, които правите на компютъра си, е да проверите колко памет или RAM (памет с произволен достъп) използва всеки от процесите. Защото RAM или паметта на вашия компютър са ограничени.
Представете си случай, в който искате да стартирате някаква програма и тя се провали, защото нямате достатъчно памет. Може би някои от процесите използват много памет, от която не се нуждаете в момента. Можете да убиете или спрете тези процеси, за да освободите RAM или памет, така че да можете да стартирате важните си програми.
В тази статия ще ви покажа как да проверите използването на паметта на всеки от процесите, работещи на вашата Linux машина. Ще използвам Debian 9 Stretch за всички демонстрации в тази статия. Но трябва да работи върху всякакви съвременни дистрибуции на Linux. Да започваме.
Проверка на използването на паметта с помощта на командата ps:
Можете да използвате пс команда за проверка на използването на паметта на всички процеси в Linux. Има един проблем с тази процедура. пс всъщност не ви показва колко памет използва процесът във формат KB или MB, но ще ви покаже колко памет се използва в проценти.
Можете да проверите използването на паметта (в проценти) от целия процес, който се изпълнява във вашата операционна система Linux, със следната команда:
$ ps -o pid, потребител,% mem, командна брадва | сортиране -b -k3 -r
Както можете да видите, всички процеси с използване на паметта в проценти са изброени в низходящ ред (Процесите, използващи по-голямата част от паметта, са изброени първо).
Проверка на използването на процесите с памет с pmap:
Можете да проверите паметта на процес или набор от процеси в човешки четим формат (в KB или килобайта) с pmap команда. Всичко, от което се нуждаете, е PID на процесите, за които искате да проверите използването на паметта.
Да кажем, че искате да проверите колко памет използва процесът с PID 917. За да направите това, стартирайте pmap както следва:
$ sudo pmap 917
Както можете да видите, общата памет, използвана от процеса 917, е 516104 KB или килобайта. Тук можете също да видите колко памет използват библиотеките и другите файлове, необходими за стартиране на процеса с PID 917.
Ако не ви интересува колко памет използват библиотеките или други зависими файлове, тогава стартирайте pmap както следва:
$ sudo pmap 917 | опашка -n 1Както можете да видите, на екрана се отпечатва само общата памет, използвана от процеса с PID 917.
Ако искате, можете допълнително да филтрирате това с awk и получавате само размера в KB или килобайта. За да направите това, стартирайте pmap както следва:
$ sudo pmap 917 | опашка -n 1 | awk '/ [0-9] K / print $ 2'Както можете да видите, отпечатва се само използването на памет в KB или килобайта.
Сега можете също да изброите колко памет се използва от множество процеси, използвайки техните PID pmap както следва:
$ sudo pmap 917 531 | grep общоЗАБЕЛЕЖКА: Тук 917 и 531 са идентификатори на процеси или PID. По този начин можете да поставите колкото искате PID.
Използване на pmap за изброяване на използването на паметта на всички процеси в килобайта:
В този раздел ще ви покажа как да напишете свой собствен скрипт за черупка, за да изброите използването на паметта на всички процеси, изпълнявани във вашата операционна система Linux, в четим от човека формат (килобайта или KB).
Първо направете нов файл sysmon в текущата работна директория със следната команда:
$ touch sysmon
Сега направете файла изпълним със следната команда:
$ chmod + x sysmon
sysmon е скриптът на черупката, който ще покаже всички работещи процеси PID, СОБСТВЕНИК, ПАМЕТ (в KB в низходящ ред) и КОМАНД. Да започваме.
Отвори sysmon скрипт с любимия ви текстов редактор, ще го използвам Кейт.
Сега първата команда, която ще изпълня, ще ми даде PID, СОБСТВЕНИК и КОМАНД от всички изпълняващи се процеси, разделени със символа двоеточие (:) и го съхранявайте в КАЧИЛО променлива. След това преминете през изхода и го отпечатайте на екрана.
Както можете да видите, получавам правилния изход.
Сега е време да обработим всеки ред, съхраняваме информацията, разделена с двоеточие, в отделни променливи. Това направих на редове 7, 8 и 9.
Както виждате, мога да печатам PID, СОБСТВЕНИК и КОМАНД в моя собствен формат сега.
Сега е време да извлечем използването на паметта на всеки PID. Линия 10 прави точно това.
Както можете да видите, всичко работи перфектно. Сега мога да отпечатам и използването на паметта на всеки процес в килобайта (KB).
Сега остава само да форматирате изхода, за да изглежда добре. Предпочитам формата на таблицата. Ред 5 отпечатва заглавката на всяка колона на таблицата.
Накрая отпечатах PID, СОБСТВЕНИК, ПАМЕТ (в KB) и КОМАНД на всеки процес в табличен формат, използвайки ред 14.
Както можете да видите, работи доста добре. Има малко проблеми, обаче, процесите не са правилно сортирани в низходящ ред по използване на паметта.
За да поправя това, премахнах сортиране -bnr -k3 от ред 3 и уви всичко в черупкова функция sysmon_main (). След това остави работата по сортирането на вид команда.
Последният скрипт на черупката изглежда по следния начин:
Както можете да видите, работи чудесно.
Сега можете да го преместите някъде като / usr / bin и го изпълнете точно както другите команди, както следва:
$ sudo mv -v sysmon / usr / bin
Изпълнение sysmon:
Благодаря, че прочетохте тази статия.