Tengo un problema con respecto a cómo matar un proceso en Cygwin en Windows. Soy completamente nuevo en Cygwin. Pero tengo una tarea que simplemente no puedo matar. He intentado emitir los siguientes comandos:
kill 4568
kill -9 4568
/bin/kill -f 4568
He emitido los comandos en un terminal Cygwin separado ya que no puedo Ctrl + C en el terminal Cygwin donde se ejecuta el proceso. He buscado en todo internet sin éxito.
Respuestas:
O
O
fuente
ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -f
porque Windows no distingue entre mayúsculas y minúsculasPuedes probar:
fuente
taskkill /im:{name-of-executable}
También es útil.taskkill /im <name-of-exe> /f
es aún más útil.taskkill //im <name-of-exe>
(tenga en cuenta la necesidad de 2 barras)Si quieres una solución solo para BASH, prueba esto: (funciona para mí)
NOTA: use / bin / kill, la eliminación de shell incrustada no matará los PID para los procesos generales de Windows.
fuente
(De mi respuesta a una pregunta similar sobre SO ):
Los diferentes programas de Windows manejarán las señales que eliminan los envíos de manera diferente; nunca han sido diseñados para tratar con ellos de la misma manera que los programas Linux / Cygwin.
El único método confiable para matar un programa de Windows es usar una herramienta específica de Windows, como el Administrador de tareas o el Explorador de procesos.
Dicho esto, si aún no lo ha hecho, puede tener suerte con la ejecución de su terminal Cygwin en modo administrador (haga clic derecho en su acceso directo y seleccione "Ejecutar como administrador").
fuente
Dos cosas para pensar aquí:
Para obtener el WINPID correcto para matar, use
cat /proc/<PID>/winpid
. Es decir, ejecuta esto:e inmediatamente después de hacer otro
ps
.La herramienta correcta para usar es sysinternals,
PsKill64.exe -t <winpid>
que también mata a todos los descendientes del proceso de script, quekill
no lo hace.fuente
cat /proc/${ZID}/winpid
, muy bueno saberlo. Y más rápido que la solución conps -aW | grep ...
, al menos en mi cygwin en Win 7 x64. Pero para PsKill64, creo que necesitas-t
matar subprocesos, ytaskkill
también puedes matar subprocesos.-t
para matar descendientes. Respuesta corregidaSi tiene un programa de Windows que es un subproceso bajo un proceso cygwin bash que puede usar
taskkill /F /PID [the cygwin process id] /T
para eliminar el árbol de procesos, no es necesario obtener el PID de la ventanaps
conawk
etc.Esto se prueba en Win7 x64.
Por supuesto, también puede usar el PID de la ventana.
fuente
En Git Bash uso:
No lo he probado en Cygwin, pero supongo que también funcionará allí.
fuente