it-swarm.com.de

Wie kann ich einen Prozess in cygwin beenden?

Hallo, ich habe den folgenden Prozess, den ich nicht töten kann:

The process to be killed.

Ich laufe cygwin in Windows XP 32 Bit. 

Ich habe versucht, die folgenden Befehle auszugeben:

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

Wenn ich/bin/kill -f 4760 schreibe, erhalte ich die Meldung 'kill: pid 4760 konnte nicht geöffnet werden'.

Wenn ich/bin/kill -9 5000 schreibe, erhalte ich die Meldung 'kill: 5000: Kein solcher Prozess'.

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

hoffe jemand kann thx helfen :)

30
Diemauerdk

Der Prozess ist höchstwahrscheinlich von Windows gesperrt. Der Fehler "PID XXX konnte nicht geöffnet werden" weist darauf hin ... Um zu bestätigen, versuchen Sie es mit Windows Taskkill zu töten 

    taskkill /PID 4760
23
kjp

Seltsamerweise funktioniert folgendes 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;
10
nino

Unterschiedliche Windows-Programme behandeln die Signale, die kill unterschiedlich sendet; Sie wurden nie so konzipiert, dass sie auf dieselbe Weise wie Linux/Cygwin-Programme behandelt werden.

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

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

2
me_and

Erstellen Sie eine Datei namens killall.sh mit dieser Zeile

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

Dann erteilen Sie ihm Ausführungsberechtigungen. 

chmod 777 killall.sh

Fügen Sie in Ihrem .bash_profile diese Zeile hinzu

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

Dann musst du einfach "killall [Name]" eingeben

2
Rob Schlackman

Die von @Donal Tobin vorgestellte Methode ist korrekt: 

kill -f <pid>

Ich muss mich jedoch nicht als Administrator anmelden.

1
Navid

Für mich funktioniert dieser Befehl nicht unter Windows 10 in Cygwin:

$ kill -f 15916
bash: kill: (15916) - No such process

Stattdessen können Sie folgende Befehle verwenden:

$ powershell kill -f 15916
$ netstat -ano | grep ':8080' | awk '{print $5}' | xargs powershell kill -f
$ netstat -ano | grep ':8080' | awk '{print $5}' | while read pid; do powershell kill -f $pid; done;
$ netstat -ano | grep ':8080' | awk '{sub(/\r/,"",$5) ; print $5}' | while read pid; do taskkill /F /PID $pid; done;
SUCCESS: The process with PID 15916 has been terminated.
0
Serhii Popov

killall.sh - Nach Prozessnamen töten.

#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;

Verwendungszweck:

$ killall <process name>
0
Tony O'Hagan