Wie finden Sie windows-Prozess mit Prozess-id auf der Kommandozeile

Habe ich zwei Prozesse laufen (foo.cmd und eine bar.cmd auf Windows7 prof), die beide regelmässig, wenn der andere Prozess noch läuft.
Da jeder Prozess kennt die PID des anderen Prozesses in die variable %FPID%, die ich verwendet, um zu überprüfen, ob der andere Prozess noch ausgeführt wird, wie dies

FOR /F "tokens=1,*" %%a in ('tasklist /FI "PID eq %FPID%" /NH ^| find /C "%FPID%"') do set COUNTP=%%a

Wenn %COUNTP% war jetzt größer als 0 ist, wird der andere Prozess noch ausgeführt wurde.

Aber jedes jetzt und dann %COUNTP% war gleich 0 ist, selbst wenn der andere Prozess war eigentlich noch läuft (noch schrieb in logfiles).
Eine Sekunde später konnte wieder gefunden werden.

  • Welche Umstände dazu führen könnten, die nicht finden, einen Laufenden Prozess durch Ihre ID wie ich mit der Aussage oben?
  • Gibt es eine bessere/schönere/schnellere Möglichkeit zu überprüfen, ob ein Prozess für eine bestimmte PID ist immer noch aktiv und läuft (unter windows)?
  • können Sie erklären, wie diese Chargen wissen, einander die pids, hast du grep WMIC PROCESS zuvor im Skript ? Wir müssten, um zu replizieren, dass Sie in der WMI-watcher für Sie zu arbeiten, wie Sie wollen. Oder sind Sie um Hilfe bitten, wie das zu tun, und ich soll es erklären ?
  • Danke für deine Antwort. Bekomme ich die PID eines Prozesses wie hier[serverfault.com/questions/126502] und schreiben Sie Sie auf Dateien (foo.dat und eine bar.dat). Jetzt können Sie nur aus der Datei Lesen und speichern Sie den Inhalt in die variable %FPID% wie set /p FPID=<"C:\tmp\foo.dat". Das funktioniert wirklich gut und normalerweise kann ich identifizieren, die anderen Laufenden Prozess, indem Sie diese ID, jede minute. nur alle ~250 mal kann ich nicht finden, die anderen Prozess - warum könnte es sein, unsichtbar für den Befehl tasklist /FI "PID eq %FPID%" /N
  • Der Grund wäre wahrscheinlich, dass die PID falsch oder ist der Prozess nicht ausgeführt wurde. Vielleicht ist dein watchdog-Prozess neu gestartet und es ist der Grund, warum es dann auch gefunden wurde. Wir würden raten, ohne zu sehen, Ihren code.
  • oder vielleicht konnte er nicht die neuen pid in der foo.dat-Datei. Dies zeigt die korrekte pid on-the-fly aus der powershell, aber es kann neu geschrieben werden für WMIC. (get-process | where {$_.mainwindowtitle -match "Foo"}|select ID).ID
InformationsquelleAutor Preexo | 2013-12-16
Schreibe einen Kommentar