Mam problem z zabiciem procesu w Cygwin w systemie Windows. Jestem zupełnie nowy w Cygwin. Ale mam zadanie, którego po prostu nie mogę zabić. Próbowałem wydać następujące polecenia:
kill 4568
kill -9 4568
/bin/kill -f 4568
Wydałem polecenia w osobnym terminalu Cygwin, ponieważ nie mogę Ctrl + C w terminalu Cygwin, w którym działa proces. Szukałem w Internecie bez powodzenia.
Odpowiedzi:
Lub
Lub
źródło
ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -f
ponieważ system Windows nie rozróżnia wielkości literMożesz spróbować:
źródło
taskkill /im:{name-of-executable}
jest również przydatny.taskkill /im <name-of-exe> /f
jest jeszcze bardziej przydatny.taskkill //im <name-of-exe>
(zwróć uwagę na potrzebę 2 ukośników)Jeśli chcesz tylko rozwiązania BASH, spróbuj tego: (działa dla mnie)
UWAGA: użyj / bin / kill, osadzone zabijanie powłoki nie zabije PID dla ogólnych procesów systemu Windows.
źródło
(Od mojej odpowiedzi na podobne pytanie dotyczące SO ):
Różne programy systemu Windows będą obsługiwać sygnały, które zabijają wysyłanie w różny sposób; nigdy nie zostały zaprojektowane do radzenia 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 tego nie zrobiłeś, możesz mieć szczęście z uruchomieniem terminalu Cygwin w trybie administratora (kliknij prawym przyciskiem myszy skrót i wybierz „Uruchom jako administrator”).
źródło
Dwie rzeczy do przemyślenia tutaj:
Aby uzyskać prawidłowy WINPID do zabicia, użyj
cat /proc/<PID>/winpid
. Uruchom to:i zaraz potem zrób inną
ps
.Właściwym narzędziem do użycia są sysinternals,
PsKill64.exe -t <winpid>
które zabijają również wszystkich potomków procesu skryptu, cokill
nie.źródło
cat /proc/${ZID}/winpid
, bardzo dobrze wiedzieć. I szybsze niż rozwiązanie zps -aW | grep ...
, przynajmniej na moim cygwinie pod Win 7 x64. Ale w przypadku PsKill64 myślę, że musisz-t
zabić podprocesy, ataskkill
także zabić podprocesy.-t
zabić potomków. Poprawiona odpowiedźJeśli masz program Windows, który jest podprocesem w ramach procesu cygwin bash, możesz użyć go
taskkill /F /PID [the cygwin process id] /T
do zabicia drzewa procesów, nie musisz uzyskiwać PID z Windowsa zaps
pomocąawk
itp.Jest to testowane pod Win7 x64.
Oczywiście możesz także użyć Window PID.
źródło
W Git Bash używam:
Nie próbowałem tego w Cygwin, ale przypuszczam, że tam też zadziała.
źródło