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
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.
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
Você pode tentar:
taskkill /pid 4568
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.
(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").
Duas coisas para pensar aqui:
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.
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.
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á.