Como matar um processo do Windows em um terminal cygwin?

Como matar um processo do Windows em um terminal cygwin?

Estou com um problema sobre como encerrar um processo no Cygwin no Windows. Eu sou completamente novo no Cygwin. Mas tenho uma tarefa que simplesmente não posso matar. Eu tentei emitir os seguintes comandos:

kill 4568
kill -9 4568
/bin/kill -f 4568

Emiti os comandos em um terminal Cygwin separado, pois não consigo Ctrl+C no terminal Cygwin onde o processo é executado. Procurei por toda a internet sem sucesso.

Responder1

ps -W | awk '/calc.exe/,NF=1' | xargs kill -f

Ou

ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f

Ou

powershell kill -n calc

Responder2

Você pode tentar:

taskkill /pid 4568

Responder3

Se você quiser uma solução somente BASH, tente isto: (funciona para mim)

    KILLPS="<My Process Name>"
    WINPS=`ps -W | grep -i $KILLPS`         # Make case-insensitive.
    PID=`echo $WINPS | cut -d' ' -f1` 
    /bin/kill -f "$PID"

NOTA: use /bin/kill, o shell kill incorporado não eliminará PIDs para processos gerais do Windows.

Responder4

Duas coisas para pensar aqui:

  1. Obtenha o PID correto, que é o WINPID.
  2. Use a ferramenta certa.

Para obter o WINPID correto para matar, use cat /proc/<PID>/winpid. Ou seja, execute isto:

ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
 

e imediatamente depois faça outro ps.

A ferramenta certa para usar éSysinternals' PsKill64.exe -t <winpid>que também mata todos os descendentes do processo de script, o que killnão acontece.

informação relacionada