Утилита командной строки для просмотра списка задач, использования ЦП и использования памяти.

Аминадав Гликштейн

Утилита командной строки для просмотра списка задач, использования ЦП и использования памяти.

Я хочу каждые 10 минут регистрировать список всех запущенных приложений в Windows, использование ЦП и использование памяти.

У меня много задач node.exe, поэтому я хочу видеть аргументы задачи (например: node c:\myscript.js)

Я пробовал: tasklist/?но не нашел ничего, связанного с использованием ЦП.

Я пробовал: procexp/?но не нашел способа экспортировать список в файл (или показать в консоли)

Я пробовал: cprocess(NirSoft), он может делать дамп в файл и показывать процессор, но не дает аргументов запущенного exe.

Любые идеи?

Стив Барнс

Лично я бы использовал Python и прекрасную библиотеку psutil , которая может собрать практически всю информацию, о которой вы только можете мечтать:

Для процесса в Windows вы можете получить:

  • cpu_percent
  • cpu_times
  • io_counters
  • memory_info
  • memory_maps
  • num_ctx_switches
  • num_handles
  • num_threads
  • имя пользователя
  • полный путь к exe
  • командная строка
  • родитель
  • статус
  • cwd
  • io_counters
  • намного больше
  • еще больше на Linux и OSX

Некоторый код Python 3.5+ , чтобы сделать более или менее то, что вы просите, для консоли (то же самое можно сделать с более ранними Python, но не с f-строкой) :

import psutil
import time
import datetime

while True:
    print(datetime.datetime.now())
    for proc in psutil.process_iter():
        try:
            pr = proc.as_dict()
            print(f'{pr["name"]}\t{pr["memory_percent"]}\t{pr["cpu_percent"]}\t{pr["num_threads"]}\t{" ".join(pr["cmdline"][1:]) if pr["cmdline"] else ""}')
        except (OSError, psutil.AccessDenied):
            print(pr.name(), 'ACCESS DENIED')
    print('\n*** Ctrl-C to Exit ***\n\n')
    time.sleep(600) # Sleep for 10 Mins

На моей машине вывод выглядит так:введите описание изображения здесь

Вы можете просто направить вывод в файл или изменить код для вывода напрямую в файл .csv.

  • Бесплатно, бесплатно и с открытым исходным кодом
  • Кроссплатформенный
  • Гибкий

Том

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

@echo off
ECHO ***Date and Time***
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
echo %datetimef%
ECHO ***List Processes***
WMIC path win32_process get Caption,Processid,Commandline
ECHO ***CPU-Usage***
wmic cpu get loadpercentage
ECHO ***Memory Usage***
systeminfo | findstr Memory

Это довольно просто, вы можете настроить его в соответствии со своими потребностями, но это соответствует вашим требованиям. Я также вижу, что вы хотите, чтобы эти данные были экспортированы в файл, чтобы вы могли вывести содержимое пакетного файла следующим образом:batch.bat > Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.log

авиаудар

Ссылка не работает, к вашему сведению