У меня проблема с тем, как убить процесс в Cygwin на Windows. Я совершенно новичок в Cygwin. Но у меня есть задача, которую я просто не могу убить. Я попытался выдать следующие команды:
kill 4568
kill -9 4568
/bin/kill -f 4568
Я ввел команды в отдельном терминале Cygwin, так как не могу нажать Ctrl + C в терминале Cygwin, где выполняется процесс. Я искал по всему интернету без успеха.
Ответы:
Или
Или
источник
ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -f
потому что в Windows регистр неВы можете попробовать:
источник
taskkill /im:{name-of-executable}
также полезно.taskkill /im <name-of-exe> /f
еще полезнее.taskkill //im <name-of-exe>
(обратите внимание на необходимость 2 косыхЕсли вы хотите решение BASH only, попробуйте это: (это работает для меня)
ПРИМЕЧАНИЕ: используйте / bin / kill, встроенная команда kill не будет уничтожать PID для общих процессов Windows.
источник
(Из моего ответа на аналогичный вопрос по SO ):
Различные программы Windows будут обрабатывать сигналы, которые убивают, по-разному; они никогда не были предназначены для того, чтобы иметь с ними дело так же, как программы для Linux / Cygwin.
Единственный надежный способ уничтожения программы Windows - использовать специальный инструмент для Windows, такой как диспетчер задач или обозреватель процессов.
Тем не менее, если вы еще этого не сделали, возможно, вам повезет с запуском терминала Cygwin в режиме администратора (щелкните правой кнопкой мыши по ярлыку и выберите «Запуск от имени администратора»).
источник
Здесь нужно подумать о двух вещах:
Чтобы получить правильный WINPID для уничтожения, используйте
cat /proc/<PID>/winpid
. Т.е. запустить это:и сразу после того, как сделать другое
ps
.Правильный инструмент для использования - sysinternals,
PsKill64.exe -t <winpid>
который также убивает всех потомков процесса сценария, которыйkill
не делает.источник
cat /proc/${ZID}/winpid
, очень приятно знать. И быстрее, чем решение сps -aW | grep ...
, по крайней мере, на моем Cygwin под Win 7 x64. Но для PsKill64 я думаю, что вам нужно убить подпроцессы-t
, аtaskkill
также убить подпроцессы.-t
убивать потомков. Исправленный ответ.Если у вас есть программа для Windows, которая является подпроцессом в процессе cygwin bash, который вы можете использовать
taskkill /F /PID [the cygwin process id] /T
для уничтожения дерева процессов, вам не нужно получать идентификатор окна сps
помощьюawk
и т. Д.Это протестировано в Win7 x64.
Конечно, вы также можете использовать Window PID.
источник
В Git Bash я использую:
Я не пробовал это в Cygwin, но я думаю, что это будет работать там же.
источник