25 votos

¿Hay algo más fuerte que "Forzar Cierre"?

Tengo una aplicación que no mueren: se ha ido de la base, pero los restos de la ventana (con un beachball, si me ratón sobre él). Es el no uso de la CPU, pero quiero que se vaya.

¿Hay algo más fuerte que "Forzar Cierre", realmente realmente matar a una aplicación?

14voto

Robin Robinson Puntos 1031

Si usted sabe el nombre de la aplicación, se puede comprobar en el Monitor de Actividad para ver si sigue funcionando y probar su Fuerza de Cierre. Si eso no funciona, tomar nota de la aplicación ID de proceso (pid). Ir a la Terminal y escriba kill [pid], sustituyendo "[pid]" con el número que anotó anteriormente. Si eso no funciona, intente kill -3 [pid] y si eso no funciona, kill -9 [pid]. Si el proceso es propiedad de un usuario diferente (esto no es probable), es posible que deba reemplazar kill con sudo kill y escriba su contraseña cuando se le solicite.

Si la aplicación no se muestra en el Monitor de Actividad o no se podía kill , la ventana puede ser una izquierda más pegado a algún otro lugar y la aplicación simplemente no funciona más. En este caso, a veces (no siempre) puede trabajar a killall SystemUIServer o killall Dock.

Si nada de esto funciona, tendrás que cerrar sesión y volver en o reiniciar el sistema. Las pocas veces que he llegado a este punto, la app fue tan atrapado que impidió cerrar la sesión o apagar, así que tuve que reinicio.

7voto

La fuerza de cierre de la ventana, killally kill todos los procesos de enviar señales PLAZO por defecto. Usted puede utilizar killall -kill si eso no funciona.

El killall utilidad mata los procesos seleccionados por su nombre, como frente a la selección por pid como lo ha hecho matar(1). De forma predeterminada, se enviará un TÉRMINO de la señal a todos los procesos con un real UID idéntica a la llamada de killall que coincidir con el nombre procname. El super-usuario puede matar cualquier proceso.

Si ejecuta sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }' y la salida de algunos de la aplicación de la fuerza de cierre de la ventana, la señal normalmente se muestra como -15 (PLAZO). Pero cuando sale de un proceso en segundo plano (o una aplicación que no aparece en el Dock) de Monitor de Actividad, la señal normalmente se muestra como -9 (MATAR).

SIGTERM es el valor predeterminado de la señal se envía a un proceso por la muerte o killall comandos. Causa de la terminación de un proceso, pero a diferencia de la señal SIGKILL, puede ser recogido e interpretado (o ignorado) por el proceso. Por lo tanto, SIGTERM es pedir un proceso para terminar muy bien, permitiendo la limpieza y el cierre de archivos. Por esta razón, en muchos sistemas Unix durante el cierre, init problemas SIGTERM a todos los procesos que no son esenciales para apagar, espera unos segundos y, a continuación, emite señal SIGKILL para forzar la finalización de cualquiera de dichos procesos que siguen.

7voto

ManKetnas Puntos 1

He tenido situaciones donde la Fuerza de Cierre, el Monitor de Actividad, kill, y otros métodos no funcionan, y mi Mac no podía apagado a causa de ella.

En este caso, sudo shutdown -r now trabajado cuando nada más lo haría, y es probablemente mejor que hacer un duro apagado mediante el botón de encendido.

1voto

jm666 Puntos 4489

Como en anteriores respuestas, la manera más fuerte para terminar cualquier proceso es SIGKILL, por ejemplo kill -9 process_id.

Sin embargo, existen procesos de lo que son simplemente imposibles de Force Quit ni kill. Se llama como zombie procesos.

Aquí está un breve guión de lo que va a crear un zombie proceso de dos minutos:

perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'

Ejecute la secuencia de comandos en el Terminal y obtendrá la salida, como a continuación:

     unkillable pid:50571
        UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
        501 47380 47379     4006   0  31  0  2448416   2900 -      S                   0 ttys000    0:00.36 -bash
        501 50570 47380     4006   0  31  0  2443512   1424 -      S+                  0 ttys000    0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570     2006   0   0  0        0      0 -      Z+                  0 ttys000    0:00.00 (perl)
        501 12795 12794     4006   0  31  0  2448296   1752 -      S+                  0 ttys001    0:00.75 -bash
        501 50123 50122     4006   0  31  0  2448296   2688 -      S+                  0 ttys002    0:00.14 -bash

Si usted compruebe la columna de estado para el imbatible proceso (en este caso: 50571) ver el Z bandera, ¿cuál es la media de zombie.

Usted puede tratar de enviar cualquier kill señal (por ejemplo, kill -9 50571) y el proceso todavía existe. De todos modos, no duele mucho el sistema, porque en realidad no existe - sólo ocupa la tabla de procesos.

En el ejemplo anterior, en 120 segundos será borrado.

0voto

Brock Vond Puntos 161

Esto es lo que debe hacer:

  1. En el Monitor de Actividad, haga Doble Clic en el proceso O haga Clic en el icono de Información, para abrir el proceso de la ventana".
  2. Verá el proceso de # en el Proceso de Grupo de línea como processName (####) donde "####" es el proceso de' número.
  3. Abre el terminal y escribe "sudo kill ####" sin las comillas y pulsa enter
  4. Introduzca su contraseña de terminal, no mostrar tu entrada aquí
  5. El proceso es asesinado.

Un proceso como este se elimina en modo seguro, si vas a intentar una desinstalación.

Saludos, Bryan

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X