Ich habe ein Problem beim Beenden eines Prozesses in Cygwin unter Windows. Ich bin ganz neu bei Cygwin. Aber ich habe eine Aufgabe, die ich einfach nicht töten kann. Ich habe versucht, die folgenden Befehle auszugeben:
kill 4568
kill -9 4568
/bin/kill -f 4568
Ich habe die Befehle in einem separaten Cygwin-Terminal ausgegeben, da ich sie im Cygwin-Terminal, in dem der Prozess ausgeführt wird, nicht mit Strg + C ausführen kann. Ich habe im ganzen Internet ohne Erfolg gesucht.
Antworten:
Oder
Oder
quelle
ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -f
weil Windows die Groß- und Kleinschreibung nichtSie können versuchen:
quelle
taskkill /im:{name-of-executable}
ist auch nützlich.taskkill /im <name-of-exe> /f
ist noch nützlicher.taskkill //im <name-of-exe>
(beachten Sie die Notwendigkeit für 2 Schrägstriche)Wenn Sie nur eine BASH-Lösung wünschen, versuchen Sie Folgendes: (funktioniert bei mir)
ANMERKUNG: Verwenden Sie / bin / kill. Mit der eingebetteten Shell kill werden PIDs für allgemeine Windows-Prozesse nicht beendet.
quelle
(Aus meiner Antwort auf eine ähnliche Frage zu SO ):
Verschiedene Windows-Programme behandeln die Signale, die die Sends beenden, unterschiedlich. Sie wurden nie so entwickelt, wie Linux / Cygwin-Programme damit umgehen.
Die einzige zuverlässige Methode zum Beenden eines Windows-Programms ist die Verwendung eines Windows-spezifischen Tools wie Task-Manager oder Prozess-Explorer.
Wenn Sie dies noch nicht getan haben, haben Sie möglicherweise Glück, wenn Sie Ihr Cygwin-Terminal im Administratormodus ausführen (klicken Sie mit der rechten Maustaste auf Ihre Verknüpfung und wählen Sie "Als Administrator ausführen" aus).
quelle
Zwei Dinge, über die Sie nachdenken sollten:
Verwenden Sie, um die richtige WINPID zum Töten zu erhalten
cat /proc/<PID>/winpid
. Ich führe das aus:und unmittelbar danach einen anderen machen
ps
.Das richtige Werkzeug ist sysinternals,
PsKill64.exe -t <winpid>
das auch alle Nachkommen des Skriptprozesses tötet, waskill
nicht der Fall ist.quelle
cat /proc/${ZID}/winpid
, sehr gut zu wissen. Und schneller als die Lösung mitps -aW | grep ...
, zumindest auf meinem Cygwin unter Win 7 x64. Aber für PsKill64 denke ich, dass Sie-t
Unterprozesse beenden müssen und auch Unterprozesse beendentaskkill
können.-t
Nachkommen töten. Antwort korrigiert.Wenn Sie ein Windows-Programm haben, das ein Unterprozess im Rahmen eines Cygwin-Bash-Prozesses ist, mit dem Sie
taskkill /F /PID [the cygwin process id] /T
den Prozessbaum beenden können , müssen Sie die Windows- PID nichtps
mitawk
usw.abrufen. Dies wird unter Win7 x64 getestet.
Natürlich können Sie auch die Window PID verwenden.
quelle
In Git Bash verwende ich:
Ich habe es in Cygwin nicht ausprobiert, aber ich nehme an, dass es dort auch funktionieren wird.
quelle