Befehlszeilenprogramm zum Anzeigen der Liste der Aufgaben, der CPU-Auslastung und der Speicherauslastung

Ich möchte alle 10 Minuten eine Liste aller laufenden Apps in Windows, die CPU-Auslastung und die Speicherauslastung protokollieren.

Ich habe viele node.exe-Aufgaben, daher möchte ich die Argumente der Aufgabe sehen (zum Beispiel: node c:\myscript.js)

Ich habe versucht: tasklist/?aber nichts im Zusammenhang mit der CPU-Auslastung gefunden.

Ich habe versucht: procexp/?aber keine Möglichkeit gefunden, die Liste in eine Datei zu exportieren (oder in einer Konsole anzuzeigen)

Ich habe versucht: cprocess(NirSoft), es kann in eine Datei ausgeben und die CPU anzeigen, aber es gibt nicht die Argumente der exe aus, die ausgeführt wurde.

Irgendwelche Ideen?

Antworten (2)

Persönlich würde ich Python und die schöne psutil- Bibliothek verwenden, die fast alle Informationen sammeln kann, von denen Sie träumen können:

Für einen Prozess unter Windows erhalten Sie:

  • CPU_Prozent
  • cpu_times
  • io_counters
  • Speicher_info
  • memory_maps
  • num_ctx_switches
  • num_handles
  • Anzahl_Threads
  • Nutzername
  • vollständiger Exe-Pfad
  • Befehlszeile
  • Elternteil
  • Status
  • cwd
  • io_counters
  • viel mehr
  • noch mehr auf Linux & OSX

Etwas Python 3.5+ Code, um mehr oder weniger das zu tun, was Sie für die Konsole verlangen (dasselbe kann mit früheren Pythons gemacht werden, aber nicht mit der f-Zeichenfolge) :

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

Auf meinem Rechner sieht die Ausgabe so aus:Geben Sie hier die Bildbeschreibung ein

Sie könnten die Ausgabe einfach in eine Datei umleiten oder den Code so ändern, dass er direkt in eine CSV-Datei ausgegeben wird.

  • Kostenlos, Gratis & Open Source
  • Plattformübergreifend
  • Flexibel

Sie könnten dies einfach mit einer Batch-Datei tun, hier ist etwas, das ich schnell aufgeschrieben habe:

@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

Es ist ziemlich einfach, Sie können es an Ihre Bedürfnisse anpassen, aber dies erfüllt Ihre Anforderungen. Ich sehe auch, dass Sie möchten, dass diese Daten in eine Datei exportiert werden, damit Sie den Inhalt der Batch-Datei wie folgt ausgeben können:batch.bat > Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.log

Link ist defekt FYI