2012-06-04 3 views
28

Hallo, ich habe den folgenden Prozess, den ich töten kann nicht:Wie tötet man einen Prozess in Cygwin?

The process to be killed.

ich Cygwin unter Windows XP 32-Bit leite.

Ich habe versucht, die folgenden Befehle eingeben:

/bin/kill -f 4760 
/bin/kill -9 5000 
kill -9 5000 
kill 5000 

Wenn ich/bin schreiben/kill -f 4760 bekomme ich die Meldung: 'Sieg: nicht öffnen konnte pid 4760'.

Wenn ich/bin/kill -9 5000 schreibe, bekomme ich die Nachricht, 'kill: 5000: No so process'.

Ich verstehe einfach nicht, warum dieser Prozess nicht getötet werden kann. Da es eine WINID hat sollte es nicht durch/bin/kill -f 4760 getötet werden?

Hoffnung jemand kann thx helfen :)

+3

1. Start Cygwin als Administrator Benutzer 2. Verwenden Sie den Pfad/bin gerade Typ/kill (kill ist ein Shell-Befehl in der bash-Shell) 3./ Bin/kill -f sollte –

+0

1. Starten Cygwin Terminal als Administrator Benutzer 2. Verwenden der Pfad/bin/kill (Abtötung in der bash special) dann arbeiten, 3./bin/kill -9 -f sollte dann arbeiten 4. Es ist möglich, Windows-Prozesse in einem Zustand zu sein, wo sie nicht (wie gedebuggt) getötet werden können –

Antwort

21

Der Prozess von Windows-höchstwahrscheinlich gesperrt ist. Der Fehler, den Sie bekommen, konnte "PID XXX" nicht öffnen, weist darauf hin. Um zu bestätigen, versuchen Sie es mit Fenstern zu töten taskkill

taskkill /PID 4760 
+0

Wenn i-Typ taskkill/PID 4760 oder taskkill/PID 5000 erhalte ich die Fehlermeldung: ‚eRROR: der Prozess" 4760 "nicht gefunden." – Diemauerdk

+0

Auch in Windows-Task-Verwaltung kann ich den Prozess nicht sehen. – Diemauerdk

+0

Sehen Sie es, wenn Sie eine Aufgabenliste | grep "dscli" von der Windows-Befehlszeile? – kjp

2

Verschiedene Windows-Programme werden die Signale verarbeiten, die kill anders sendet; Sie wurden niemals so entwickelt, dass sie mit Linux/Cygwin-Programmen vergleichbar sind.

Die einzige zuverlässige Methode zum Beenden eines Windows-Programms besteht in der Verwendung eines Windows-spezifischen Tools wie Task-Manager oder Prozess-Explorer.

Wenn Sie dies noch nicht getan haben, haben Sie möglicherweise Glück mit Ihrem Cygwin-Terminal im Administratormodus (klicken Sie mit der rechten Maustaste auf die Verknüpfung und wählen Sie "Als Administrator ausführen").

1

Verfahren präsentiert von @Donal Tobin ist richtig:

kill -f <pid>

Allerdings brauche ich nicht als Administrator anmelden.

8

Merkwürdigerweise folgende Arbeiten in Cygwin:

echo PID1 PID2 PID3 | xargs kill -f 

Zum Beispiel:

ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done; 
+0

Der wichtige Faktor für mich hier war das' -f' Argument in 'kill' . Durch das Hinzufügen wurde der Fehler "Kein solcher Prozess" beendet. Vielen Dank! –

1

Erstellen Sie eine Datei namens killall.sh mit dieser Linie

ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done; 

Dann geben sie ausführen Berechtigungen.

chmod 777 killall.sh 

In .bash_profile fügen Sie diese Zeile

alias killall="~/killall.sh" (point it to the correct location) 

Dann müssen Sie "killall [name]"