0 / 0 / 0
Регистрация: 24.05.2018
Сообщений: 5
1

Поиск и завершение "висящих" процессов

09.10.2018, 16:33. Показов 2098. Ответов 3

Author24 — интернет-сервис помощи студентам
Добрый день.
Суть такая, имеем терминальный сервер, есть процессы которые "висят" но отвечают. Их несколько с одинаковым именем.
Надо найти те что висят давно и кильнуть.
Что делал:
Get-Process | Where-Object {$_.Name -contains "Crystal"} | select-Object TotalProcessorTime
Выдаёт 4 результат
TotalProcessorTime
------------------
00:03:48.4843750
23:48:35.0781250
00:00:10.9218750
15:12:51.5937500

Тут видно что 2 и 4 процесс "больные".
Как написать код чтобы кильнуть именно их?

PowerShell
1
2
$PROСTIME = (Get-Process |  where-Object {$_.Name -contains "Crystal"}).TotalProcessorTime 
if ($PROСTIME -gt 80000 ) {-Stop-Process}
Думал так выйдет, но это лажа какая-то)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2018, 16:33
Ответы с готовыми решениями:

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

Работа с системой: поиск/завершение процессов
Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd...

Как организовать поиск и завершение процессов?
Как сделать так чтобы программа искала процессы и закрывала их? При чем не один раз а много т.е...

Завершение процессов
Добрый день, есть вот такое задание Процесс 1 порождает потомка 2, который в свою очередь...

3
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.10.2018, 17:12 2
Цитата Сообщение от Konstantin_SPb Посмотреть сообщение
Тут видно что 2 и 4 процесс "больные".
Как написать код чтобы кильнуть именно их?
PowerShell
1
Get-Process | ? {$_.TotalProcessorTime.TotalSeconds -gt 43200 -and $_.Name -contains "Crystal"} | Stop-Process
0
0 / 0 / 0
Регистрация: 24.05.2018
Сообщений: 5
09.10.2018, 17:44  [ТС] 3
Спасибо! Мне такой вариант нравится.
Но если чуть "усложнить".
Вот нашёл на просторах такой скрипт
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
сls
 
#Узнаем сколько у нас всего ядер
$core = Get-WmiObject -Class Win32_ComputerSystem | Select-Object NumberOfLogicalProcessors
 
#Первый замер
$data_start = Get-Date
$process_start = Get-Process | Where-Object {$_.Name -contains "7zFM"} | Select-Object TotalProcessorTime
 
# "Поспим" немного и "поработаем" в данном процессе
start-sleep -Seconds 5
 
#Второй замер
$data_stop = Get-Date
$process_stop = Get-Process | where-Object {$_.Name -contains "7zFM"}
 
#Подсчитаем загрузку
$Data_delta = $data_stop.Ticks - $data_start.Ticks
$CPU_delta = $process_stop.TotalProcessorTime.Ticks - $process_start.TotalProcessorTime.Ticks
 
if ($Data_delta -gt 0 -and $CPU_delta -gt 0){
    $CPU_Load = ($CPU_delta * 100) / ($Data_delta * $core.NumberOfLogicalProcessors)
}else{
    $CPU_Load = 0
}
# Выводим результат
Write-Host $CPU_Load
.
Но он валится с ошибкой, как раз из-за того что несколько процессов с одинаковым именем.
Как его докрутить "правильно"?
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
09.10.2018, 18:15 4
Цитата Сообщение от Konstantin_SPb Посмотреть сообщение
Но он валится с ошибкой, как раз из-за того что несколько процессов с одинаковым именем.
Как его докрутить "правильно"?
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
cls
 
#Узнаем сколько у нас всего ядер
$core = Get-WmiObject -Class Win32_ComputerSystem | Select-Object NumberOfLogicalProcessors
 
foreach ($Process in gps | ? {$_.Name -contains "7zFM"})
{
 
    #Первый замер
    $data_start = Get-Date
    $process_start = Get-Process -id $Process.Id | Select-Object TotalProcessorTime
 
    # "Поспим" немного и "поработаем" в данном процессе
    start-sleep -Seconds 5
 
    #Второй замер
    $data_stop = Get-Date
    $process_stop = Get-Process -id $Process.Id | where-Object {$_.Name -contains "7zFM"}
 
    #Подсчитаем загрузку
    $Data_delta = $data_stop.Ticks - $data_start.Ticks
    $CPU_delta = $process_stop.TotalProcessorTime.Ticks - $process_start.TotalProcessorTime.Ticks
 
    if ($Data_delta -gt 0 -and $CPU_delta -gt 0)
    {
        $CPU_Load = ($CPU_delta * 100) / ($Data_delta * $core.NumberOfLogicalProcessors)
    }
    else
    {
        $CPU_Load = 0
    }
    # Выводим результат
    "Name: $($Process.Name)"
    "Id: $($Process.Id)"
    "CPU_Load: $CPU_Load`n"
 
}
Добавлено через 5 минут
Цитата Сообщение от Konstantin_SPb Посмотреть сообщение
Но если чуть "усложнить".
Вот нашёл на просторах такой скрипт
И да - не знаю, что именно вы хотели усложнить, но этот скрипт не останавливает никаких "висящих" процессов, а только высчитывает TotalProcessorTime.Ticks у нужного процесса, прошедшие за 5 секунд.

Добавлено через 11 минут
Но для получения информации о загрузки CPU существует Get-Counter


Что-то тира этого:

PowerShell
1
2
3
4
if (Get-Counter -ListSet * | ? Paths -Match "\\Процесс\(\*\)\\"){$CounterPath = "\Процесс(*)\% загруженности процессора"}
else {$CounterPath = "\Process(*)\% Processor Time"}
 
(Get-Counter -Counter $CounterPath -SampleInterval 1 -MaxSamples 10 -EA SilentlyContinue).CounterSamples | ? CookedValue -ne 0 | ft InstanceName,CookedValue
0
09.10.2018, 18:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2018, 18:15
Помогаю со студенческими работами здесь

Завершение процессов
Ребята ! нужна ваша помощь !!! Как закрыть все процессы кроме определенных ??? Желательно на...

Завершение процессов
Как в Паскале можно завершить запущенный процесс?

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

Завершение дерева процессов
Ребят,дайте код,которым можно завершить дерево процессов в c#

Завершение процессов по списку
Привет. Вот есть такой код который удаляет 1 процесс. Подскажите возможно ли его доработать, чтобы...

Завершение чужих процессов
Привет всем! Стал заниматься программированием на C# и еще совсем не много знаю. На днях возник...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru