
У меня проблема с тем, как завершить процесс в Cygwin на Windows. Я полный новичок в Cygwin. Но у меня есть задача, которую я просто не могу завершить. Я пробовал вводить следующие команды:
kill 4568
kill -9 4568
/bin/kill -f 4568
Я ввел команды в отдельном терминале Cygwin, так как не могу нажать Ctrl+C в терминале Cygwin, где запущен процесс. Я искал по всему интернету, но безуспешно.
решение1
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f
Или
ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f
Или
powershell kill -n calc
решение2
Вы можете попробовать:
taskkill /pid 4568
решение3
Если вам нужно решение только на BASH, попробуйте это: (мне это помогло)
KILLPS="<My Process Name>"
WINPS=`ps -W | grep -i $KILLPS` # Make case-insensitive.
PID=`echo $WINPS | cut -d' ' -f1`
/bin/kill -f "$PID"
ПРИМЕЧАНИЕ: используйте /bin/kill, встроенная функция kill оболочки не завершит PID для общих процессов Windows.
решение4
Здесь следует подумать о двух вещах:
- Получите правильный PID, то есть WINPID.
- Используйте правильный инструмент.
Чтобы получить правильный WINPID для завершения, используйте cat /proc/<PID>/winpid
. То есть выполните это:
ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
и сразу после этого сделайте еще один ps
.
Правильный инструмент для использования — этоSysinternals' PsKill64.exe -t <winpid>
который также убивает всех потомков процесса скрипта, что kill
не так.