2012-06-04 17 views
28

Witam Mam następujący proces, który nie mogę zabijaćJak zabić proces w cygwin?

The process to be killed.

Używam Cygwin w Windows XP 32 bit.

Próbowałem wydając następujące polecenia:

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

Kiedy piszę/bin/kill -f 4760 pojawia się komunikat 'kill: Nie można otworzyć pid 4760'.

Kiedy piszę/bin/kill -9 5000 otrzymuję komunikat "kill: 5000: No such process".

Po prostu nie rozumiem, dlaczego ten proces nie może zostać zabity. Ponieważ ma WINID nie powinien być zabity przez/bin/kill -f 4760?

nadzieję, że ktoś może pomóc thx :)

+3

1. Uruchom Cygwin jako użytkownik Administrator 2. Korzystanie ścieżka/bin/kill (kill to polecenie powłoki w powłoce bash) 3./ bin/kill -f powinien wtedy zadziałać –

+0

1. uruchomić terminal Cygwin jako Administrator 2. Użyj ścieżki/bin/kill (kill jest specjalny w powłoce bash) 3./bin/kill -9 -f powinien wtedy praca 4. Możliwe jest, że procesy systemu Windows znajdują się w stanie, w którym nie można ich zabić (np. podczas debugowania). –

Odpowiedz

21

Proces jest zamknięty od Windows najprawdopodobniej. Błąd, który otrzymujesz "nie mógł otworzyć PID XXX" wskazuje na to. Aby potwierdzić próby zabicia go z okien taskkill

taskkill /PID 4760 
+0

Po wpisaniu taskkill/PID 4760 lub taskkill/PID 5000 pojawia się błąd: "BŁĄD: proces" 4760 "nie znaleziono". – Diemauerdk

+0

Ponadto, w zadaniach zarządzania Windows nie widzę procesu. – Diemauerdk

+0

Czy widzisz, kiedy robisz listę zadań | grep "dscli" z linii poleceń Windows? – kjp

2

Różne programy Windows będą obsługiwać sygnały, które wysyła kill inaczej; nigdy nie zostały zaprojektowane, aby radzić sobie z nimi w taki sam sposób jak programy Linux/Cygwin.

Jedyną niezawodną metodą zabicia programu Windows jest użycie narzędzia specyficznego dla systemu Windows, takiego jak Menedżer zadań lub Eksplorator procesów.

To powiedziawszy, jeśli jeszcze nie, możesz mieć szczęście z uruchomieniem terminala Cygwin w trybie administratora (kliknij prawym przyciskiem myszy na skrót i wybierz "Uruchom jako administrator").

1

Metoda przedstawiona przez @Donal Tobin jest poprawna:

kill -f <pid>

Jednak nie muszę się zalogować jako administrator.

8

dziwne, następujące prace w Cygwin:

echo PID1 PID2 PID3 | xargs kill -f 

Na przykład:

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

Ważnym czynnikiem dla mnie tutaj był argument' -f' w 'kill' . Dodanie zatrzymało błąd "Brak takiego procesu". Dzięki! –

1

Utwórz plik o nazwie killall.sh z tej linii

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

potem dać to wykonać uprawnienia.

chmod 777 killall.sh 

W swojej bash_profile dodać tę linię

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

Następnie wystarczy wpisać "killall [nazwa]"