Как завершить процесс Windows в терминале Cygwin?

Как завершить процесс Windows в терминале Cygwin?

У меня проблема с тем, как завершить процесс в 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

Здесь следует подумать о двух вещах:

  1. Получите правильный PID, то есть WINPID.
  2. Используйте правильный инструмент.

Чтобы получить правильный 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не так.

Связанный контент