Я ищу командлет PowerShell, который может обеспечить функциональность, аналогичную приложению Linux Top. То, что обновляется с заданным интервалом и отображает список процессов с CPU% util.
Я видел сценарии, которые отображают загрузку CPU% в цикле, но что-то вроде top было бы намного удобнее, так как мы настроили доступ SSH / Powershell для управления (я все еще предпочитаю оболочку-замазку!)
Ответы:
Это простой вкладыш, который также будет держать надписи сверху.
Это работает, потому что форматирование таблицы без каких-либо параметров просто рисует таблицу по умолчанию. autosize используется для автоматической настройки ширины столбца, чтобы все данные помещались на экране.
Вот разбивка сокращенных используемых команд
источник
CPU
inps
- количество секунд общего использования, но не% CPU. Так что это не так полезно.Я ничего не знаю об этом в форме единого командлета, но, как вы говорите, легко написать сценарий для эмуляции top.
источник
Подобное решение, как и другие, но с использованием Get-Counter вместо Get-Process.
While(1) { $p = get-counter '\Process(*)\% Processor Time'; cls; $p.CounterSamples | sort -des CookedValue | select -f 15 | ft -a}
Пример вывода:
Я обнаружил, что большинство других решений, использующих get-process, отображают общее время ЦП с начала процесса. Это было бесполезно на моем сервере, который работает круглосуточно, где максимальный результат всегда был справедливым
svchost
иsystem
составлял миллионы секунд. Истинныйtop
или эквивалентный диспетчер задач дает моментальный снимок использования ЦП, записанного недавно за некоторое фиксированное время, и Get-Counter обеспечивает это. Поскольку этот пост суперпользователя по-прежнему является лучшим результатом Google для "powershell top", я решил, что эта альтернатива заслуживает внимания.Моя команда основана на примере 13 из документов Get-Counter: https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Diagnostics/Get-Counter .
Вот разбивка однострочника, так что вы можете легко изменить его под свои нужды:
While(1) {
просто зацикливаетсяget-counter '\Process(*)\% Processor Time'
выбирает ЦП% данных. Эта команда, похоже, занимает значительное время для возврата, поэтому нет необходимостиsleep
cls
ясно для новой таблицыsort -des CookedValue
CookedValue - это поле, в котором мы участвуемselect -f 15
показать первые 15ft -a
отображать в отформатированной таблицеисточник
Get-Counter
дает вам «мгновенный» процессор, а не совокупное время процессора сps
. Лучшее форматирование :Get-Counter '\Process(*)\% Processor Time' | Select-Object -ExpandProperty countersamples| Select-Object -Property instancename, cookedvalue| ? {$_.instanceName -notmatch "^(idle|_total|system)$"} | Sort-Object -Property cookedvalue -Descending| Select-Object -First 25| ft InstanceName,@{L='CPU';E={($_.Cookedvalue/100/$env:NUMBER_OF_PROCESSORS).toString('P')}} -AutoSize
Обеспечивает хорошие заголовки в верхней части каждого обновления без необходимости очищать всю консоль.
источник
Я не знаю о командлете PowerShell, который обеспечивает функциональность. Есть бесплатная внешняя команда, которая делает то, что вы хотите. Посмотрите на псевдоним Марка Руссиновича из сюиты Sysinternals. Pslist предоставляет список выполняющихся процессов в настраиваемом представлении. «pslist -s» обеспечивает необходимый тип непрерывного обновления с частотой обновления по умолчанию один раз в секунду.
Я предпочитаю использовать GUI Process Explorer от Mark, но pslist удобен для консольных сессий.
Домашняя страница Sysinternals находится здесь: http://technet.microsoft.com/en-us/sysinternals
Деннис
источник
Это немного более приятный способ, так как каждый раз вы видите заголовки вверху
источник
Кроме того, я хочу отметить, что если вы хотите использовать Linux-подобную среду для Windows, вы можете использовать Cygwin. Он переносит среду Linux в Windows. Вы можете использовать почти каждую команду. Не уверен, насколько это полезно для вас, хотя.
http://www.cygwin.com/
источник
Это также может помочь:
Функция опирается на
Get-Counter
сэмплы и выведетProcessId,ProcessName,ProcessorUsage
иWorkingSet
. Этот счетчик выборка может быть дополнительно расширена и включаетUser
,CommandLine
в выходном , но я не выработал еще производительный способ сделать это.источник
Этот комментарий от Марка должен получить больше рекомендаций, потому что он делает почти точно, что вопрос был, и он работает:
(ссылка на комментарий: https://superuser.com/a/770455/989044 )
Вы должны сделать для него простой модуль и разместить его на github или предоставить ему choco. Я думаю, что это должен быть стандартный модуль в первую очередь, потому что он интенсивно ищется в Google и есть все виды обходных путей, но ни один из них не является настолько элегантным и близким к команде top linux.
Извините за публикацию, но из-за правил стрикта здесь невозможно комментировать или делать заметки без 50 кармы или около того.
источник
Чтобы запустить top напрямую из cmd, вам нужно создать файл% WINDIR% \ top.bat с этим кодом:
источник
Если вы хотите фильтровать по процессу, используйте findstr
источник
Вы можете запустить монитор ресурсов из powershell с помощью:
Вы всегда можете закрыть приложение с помощью Alt + F4, и это должно переключить фокус обратно на окно powershell.
источник
Вы можете попробовать htop-альтернативу для Windows - NTop
Параметры командной строки :
Интерактивные команды:
Vi команды :
Скомпилированные бинарные файлы можно скачать здесь
источник
Сохраните следующее в файле, который называется
mytop.ps1
в папке, которая находится в вашейPATH
переменной среды. Затем используйте одну из следующих команд на любой консоли PowerShell:mytop
- использовать сортировку по умолчанию по столбцу «Память» и показать первые 30 строк.mytop CPU 50
- отсортировать по столбцу «CPU» и показать первые 50 строк.While(1) {$p = myTop Memory 50; cls; $p}
- чтобы он обновлялся каждую секунду или около того.mytop.ps1
содержание:Пример вывода:
Дополнительный кредит:
источник
Что-то еще, чтобы смотреть на это:
https://docs.microsoft.com/en-us/sysinternals/downloads/process-utilities
Существует инструмент командной строки для вывода всех процессов (и, конечно, Process Monitor или Process Explorer).
источник
Используйте команду ниже, это даст вам топ 10 загрузки процессора, и выход будет обновляться каждые 5 секунд
while (1) {пс | Sort-Object -Property CPU -Восходящий | выберите -Первый 10; Запись-Хост "выход будет обновляться через 5 секунд
n
n Ручки NPM (K) PM (K) WS (K) CPU (s) Id SI ProcessName"; сон-секунд 5}источник