Como matar um processo do Windows em um terminal cygwin?

15

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

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

Eu emiti os comandos em um terminal Cygwin separado, pois não consigo Ctrl + C no terminal Cygwin, onde o processo é executado. Eu procurei em todo o internet sem sucesso.

    
por user1093774 01.06.2012 / 13:25

7 respostas

23

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
    
por 07.06.2012 / 00:49
7

Você pode tentar:

taskkill /pid 4568
    
por 26.06.2012 / 01:06
4

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 embutido não matará os PIDs para processos gerais do Windows.

    
por 20.11.2013 / 16:42
2

(De minha resposta para um pergunta semelhante em SO ):

Diferentes programas do Windows manipularão os sinais que o kill envia de forma diferente; eles nunca foram projetados para lidar com eles da mesma maneira que os programas Linux / Cygwin são.

O único método confiável para eliminar um programa do Windows é usar uma ferramenta específica do Windows, como o Gerenciador de Tarefas ou o Process Explorer.

Dito isto, se ainda não o fez, poderá ter sorte com a execução do seu terminal Cygwin no modo de administrador (clique com o botão direito no atalho e selecione "Executar como administrador").

    
por 21.06.2012 / 11:19
1

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 kill não faz.

    
por 04.11.2017 / 20:06
0

Se você tiver um programa do Windows que é um subprocesso em um processo bash do cygwin, poderá usar taskkill /F /PID [the cygwin process id] /T para eliminar a árvore de processos, não é necessário obter o PID de janela de ps com awk etc.
Isso é testado em Win7 x64.

# Simple example in cygwin:
> notepad.exe &
> pid=$!
...
> taskkill /F /PID $pid /T

É claro que você também pode usar o Window PID.

    
por 19.12.2017 / 22:43
0

No Git Bash eu uso:

targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;

Eu não tentei isso no Cygwin, mas acho que também funcionará lá.

    
por 07.03.2018 / 09:10