Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/35: Рейтинг темы: голосов - 35, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 29

Мониторинг потребления оперативной памяти

22.09.2018, 09:27. Показов 7745. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Помогите пожалуйста написать скрипт на powershell.

Необходимо при запуске скрипта определить, какой объем оперативной памяти потребляют запущенные процессы (например chrome.exe).
Запущенных процессов может быть больше 5.
Если один или несколько процессов chrome.exe потребляют больше заданного значения, то идет оповещение по почте.
Если процесса нет в списке работающих - завершить скрипт.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2018, 09:27
Ответы с готовыми решениями:

Не выгружаються процессы из оперативной памяти...
У меня при стандартной работе не освобождаеться оперативная память, после работы в интернете, текстовых файлах и т.д. оперативка загружает...

Как узнать сколько оперативной памяти потребляет каждая служба windows
Здравствуйте! У меня стоит семерка. Решил поотключать ненужные службы windows, с целью освобождения оперативной памяти и уменьшения...

Резкое повышение потребления оперативной памяти при скачивании файла с сервера
Всем доброго времени суток. Вообщем сабж. Проблема возникает, когда пользователь скачивает с сайта любой файл, при этом происходит резкое...

7
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
22.09.2018, 12:19
Лучший ответ Сообщение было отмечено Onigma как решение

Решение

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
param(
    $pr='chrome',
    $password = '1234567890'
)
 
function mail-send ($name,$mem,$id) {
    $login='mail@ya.ru'
    $pass = convertto-securestring $password -aspl -force
    $cred = new-object system.management.automation.pscredential ($login, $pass)
    $from = 'mail@ya.ru'
    $to = 'mail222222@ya.ru'
    $server = 'mail.yandex.ru'
    $port = 25
    $subj = 'ALERT'
    $body = $name+': '+$mem+'MB, id:'+$id
    send-mailmessage -fr $from -to $to -smtps $server -port $port -subj $subj -body $body -cred $cred -usessl -enc UTF8
}
 
$lim = 100 #MB
 
ps $pr|%{if($_.ws/1MB -gt $lim){mail-send $_.Name ('{0:N0}' -f ($_.ws/1MB)) $_.id}}
где, возможен ввод параметров:
первый - имя процесса (возможен ввод нескольких имен)
второй - пароль на почтовый ящик

по умолчанию используются параметры имя:chrome и пароль:1234567890

PS
На каждое превышение, т.е. для каждого процесса, у которого потребляемая память превышает допустимый предел, отправляется одно письмо...
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 29
22.09.2018, 13:01  [ТС]
YuS_2, Спасибо большое!
0
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 53
14.02.2021, 04:35
Схожий вопрос:
как посчитать общий объем памяти, необходимый для N процессов с максимальным процессным временем.

Сделал вот так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$num = 0
$num=read-host 
$Processes = (Get-Process | Sort-Object CPU -Descending | Select-Object PM -First $num )
 
 
foreach($Process in $Processes)
{
  $Output += $Process.PM
}
"{0:N2}" -f (Write-Host "$Output") 
}
}
Только вот не пойму сам что за значения при этом выводятся..... ((( Очень надеюсь что объем памяти
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
14.02.2021, 05:48
Цитата Сообщение от YuS_2 Посмотреть сообщение
ps $pr|%{if($_.ws/1MB -gt $lim){mail-send $_.Name ('{0:N0}' -f ($_.ws/1MB)) $_.id}}
не выполнено условие

Цитата Сообщение от Onigma Посмотреть сообщение
Если один или несколько процессов
PowerShell
1
2
3
4
5
6
7
param(
    $ProcessName = "chrome",
    $threshold = 1mb
)
if (((Get-Process $ProcessName -ErrorAction SilentlyContinue).WorkingSet64 | Measure-Object -sum).Sum -gt $threshold){
    Send-MailMessage "Ahtung Ahtung" -to "email@example.com"
}
Добавлено через 5 минут
Цитата Сообщение от leksan777 Посмотреть сообщение
как посчитать общий объем памяти, необходимый для N процессов с максимальным процессным временем.
PowerShell
1
2
3
4
5
param (
    [int]$num = 6
)
 
((Get-Process | Sort-Object CPU -Descending | Select-Object -First $num).WS | Measure-Object -Average).Average
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
14.02.2021, 09:54
Цитата Сообщение от alhaos Посмотреть сообщение
не выполнено условие
Просто неточно задано условие... нет полной ясности... но интерпретация - великое дело
условие задается для отдельно взятого процесса, то бишь предел существует для одного процесса, но т.к. процессов может существовать больше одного, то и превышений может быть несколько. От этой печки и пляшем.
Бессмысленно считать общую память и посылать месседж на общее же превышение потребления процессов, т.к. интересен ID процесса, который пошел "вразнос"

Там только один вопрос остался нерешенным - какую память считать, их ведь несколько типов...
1
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 53
14.02.2021, 15:26
Хотел уточнить :

Это отборка по среднему значению времени или будет выводить объем памяти ?
Цитата Сообщение от alhaos Посмотреть сообщение
((Get-Process | Sort-Object CPU -Descending | Select-Object -First $num).WS | Measure-Object -Average).Average
PowerShell
1
CPU -Descending
- это сортировка по убыванию времени
PowerShell
1
Select-Object -First $num
- это берутся первые значения в количестве $num
PowerShell
1
| Measure-Object -Average).Average
- а вот с этим мне не совсем понятно - будет просто браться время ?
или каким образом объем памяти сюда попадает ?

Да, и вот у меня еще вопрос
PowerShell
1
2
3
4
5
param (
    [int]$num
)
 $num = read-host
((Get-Process | Sort-Object CPU -Descending | Select-Object -First $num).WS | Measure-Object -Average).Average
Из трех раз выполнений скрипта, у меня 2 раза выводится Целое значение, а 1 раз (третий) выводится что-то наподобие 123334997,333333
Хотя в начале определяется
PowerShell
1
[int]$num
по идее не должно быть знаком после запятой ?
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
14.02.2021, 16:36
Это выборка среднего ворксетов шести наиболее затратных по времени процессов

Добавлено через 3 минуты
Try it online!

Добавлено через 1 минуту
Целое поделить на целое иногда равно дабл, строгая типизация конечно благо, но пош это про комфорт, а не про благо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2021, 16:36
Помогаю со студенческими работами здесь

Мониторинг оперативной памяти - Delphi XE7
Доброго времени суток! У меня такая проблема, в интернете наткнулся на статью, где описан код программы определения оперативной памяти,...

Снижение потребления памяти
Что у меня лишнего работате? что сделать что бы снизить потребление памяти? Вин 7

Оценка потребления памяти программой или профайлер
Нужно построить график зависимости потребления программой памяти от количества переменных / длины последовательности/неважно чего. Как я...

На предприятии ведется учет потребления электроэнергии. Установлена максимальная величина суточного потребления энергии
На предприятии ведется учет потребления электроэнергии. Установлена максимальная величина суточного потребления электроэнергии, равная ...

Использование оперативной памяти (вылетают игры из-за нехватки памяти)
Перезагружаю комп, играю часа 3-4 и вся память пропадает куда-то в результате чего игры вылетают(закрытие всех прог и игр оставляет где-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru