
Ich habe ein Problem damit, wie ich einen Prozess in Cygwin unter Windows beenden kann. Ich bin ein völliger Neuling bei Cygwin. Aber ich habe eine Aufgabe, die ich einfach nicht beenden kann. Ich habe versucht, die folgenden Befehle einzugeben:
kill 4568
kill -9 4568
/bin/kill -f 4568
Ich habe die Befehle in einem separaten Cygwin-Terminal eingegeben, da ich sie im Cygwin-Terminal, in dem der Prozess ausgeführt wird, nicht mit Strg+C drücken kann. Ich habe im gesamten Internet erfolglos gesucht.
Antwort1
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f
Oder
ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f
Oder
powershell kill -n calc
Antwort2
Sie können Folgendes versuchen:
taskkill /pid 4568
Antwort3
Wenn Sie eine reine BASH-Lösung wünschen, versuchen Sie Folgendes: (bei mir funktioniert es)
KILLPS="<My Process Name>"
WINPS=`ps -W | grep -i $KILLPS` # Make case-insensitive.
PID=`echo $WINPS | cut -d' ' -f1`
/bin/kill -f "$PID"
HINWEIS: Verwenden Sie /bin/kill, die eingebettete Shell „Kill“ beendet keine PIDs für allgemeine Windows-Prozesse.
Antwort4
Hier sind zwei Dinge zu bedenken:
- Holen Sie sich die richtige PID, nämlich die WINPID.
- Verwenden Sie das richtige Werkzeug.
Um die richtige WINPID zum Beenden zu erhalten, verwenden Sie cat /proc/<PID>/winpid
. Führen Sie beispielsweise Folgendes aus:
ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
und gleich danach noch etwas anderes machen ps
.
Das richtige Werkzeug istSysinternals', PsKill64.exe -t <winpid>
wodurch auch alle Nachkommen des Skriptprozesses beendet werden, was dies kill
nicht tut.