Menú
Gratis
Registro
hogar  /  Instalación y configuración/ Cómo matar un proceso colgado en linux xfce. Dominar el comando Kill en Linux

Cómo matar un proceso colgado en linux xfce. Dominar el comando Kill en Linux

Las señales son interrupciones de software. Se utilizan para la comunicación entre procesos en UNIX y sistemas operativos similares a UNIX, como Linux, Mac OS.

Las señales han estado en uso desde Bell Labs UNIX en la década de 1970 y ahora están formalmente definidas por el estándar POSIX. Cuando llega una señal a un proceso, el sistema operativo interrumpe el flujo normal de ejecución del proceso y proporciona una notificación.

No importa qué sistema operativo esté utilizando, seguramente experimentará que sus aplicaciones se bloquean y se niegan a funcionar correctamente. En Unix, Linux, hay un comando de "matar" que puede usar para matar un proceso inmediatamente, pero no solo eso, sino que hablaré de eso un poco más adelante. En este artículo, "Comando Kill en Unix/Linux", explicaré y mostraré varios comandos de la utilidad Kill usando ejemplos preparados.

matar comandos y señales

Cuando emite el comando "matar", en realidad está enviando una señal al sistema y le indica que finalice el robot de aplicación incorrecto. Hay un total de 60 señales que se pueden usar, pero todo lo que realmente necesita saber es SIGTERM(15) y SIGKILL(9).

Puede ver todas las señales con el comando:

# matar -l

En mi macOS:

Intentaré hablar sobre todas las señales, pero al principio, hablemos solo de las más importantes y de uso frecuente.

Señales básicas

Las siguientes señales son parte del estándar POSIX. Cada señal es una macro definida en Archivo de cabecera del sistema. Suelen abreviarse sin su prefijo SIG; por ejemplo, SIGHUP a menudo se denomina simplemente HUP.

SIGTERM– Esta señal solicita la finalización de un proceso que se está ejecutando. Esta señal se puede ignorar y se le da tiempo al proceso para que se cierre bien. Cuando un programa cierra bien, significa que se le ha dado tiempo para guardar su progreso y liberar recursos. En otras palabras, no "forzó" la terminación del proceso.

sigilo La señal SIGKILL hace que el proceso deje de hacer su trabajo inmediatamente. El programa no puede ignorar esta señal. El progreso no guardado se perderá.

Sintaxis de "matar".

La sintaxis del comando es:

# matar PID(s)

# matar [-s] [-l] %pid

La señal predeterminada (si no se especifica) es SIGTERM. Cuando esta señal no ayuda y no funciona, puede usar las siguientes opciones para "matar" para forzar la finalización del proceso:

# matar SIGKILL PID

# matar -9 PID

donde "-9" es el indicador de la señal SIGKILL.

Si no sabe qué PID de aplicación usar para deshacerse de él, ejecute el comando:

$ pd-aux

Y si conoce una aplicación específica (por ejemplo, apache), puede eliminar las innecesarias y mostrar todos los procesos para este servicio:

$ ps-aux | apache

Y esto mostrará todas las aplicaciones en ejecución junto con sus PID.

Por ejemplo, para eliminar una aplicación, ejecuto el siguiente comando:

# matar -9 3629

También vale la pena señalar que puede ejecutar varios procesos al mismo tiempo para que puedan ser "matados":

# matar -9 PID1 PID2 PID 3

Vuelva a cargar los archivos de configuración o reinicie las utilidades:

# matar -1 numero_de_PID

Las señales particularmente útiles incluyen HUP, INT, kill, STOP, CONT y 0.

Las opciones son:

-s nombre_señal
El nombre simbólico de una señal que especifica la señal a la que enviar una señal no predeterminada.

-l
Si no se especifica el operando, muestra los nombres de las señales; De lo contrario, escriba el nombre de la señal correspondiente a exit_status.

-signal_name
El nombre simbólico de una señal que especifica la señal para enviar a TERM de forma predeterminada.

-signal_number
Un entero decimal no negativo que especifica la señal para enviar a TERM de forma predeterminada.

Los siguientes PID son de particular importancia:
-1 Si es superusuario, transmita la señal a todos los procesos; de lo contrario, transmitir a todos los procesos pertenecientes-
ing para el usuario.

Algunas de las señales más utilizadas son:

  • 1 HUP (colgar) - colgar.
  • 2 INT (interrupción) - interrupción.
  • 3 SALIR (salir) - salir.
  • 6 ABRT (abortar) - interrupciones.
  • 9 KILL (muerte no atrapable, no ignorable)
  • 14 ALRM (despertador) - despertador.
  • 15 TERM (señal de terminación de software)

Matar

El comando "pkill" le permite usar patrones de expresión regular extendidos y otros criterios coincidentes. En lugar de usar el PID, ahora puede eliminar la aplicación ingresando el nombre del proceso. Por ejemplo, para eliminar el navegador Firefox, simplemente ejecute el comando:

#pkillFirefox

Dado que coincide con un patrón de expresión regular, también puede ingresar parte del nombre del proceso, así:

#pkillfire

Para evitar "matar" los procesos incorrectos, puede hacer "pgrep -l [nombre del proceso]" en la lista de procesos adecuados.

El comando pkill tiene muchas más opciones, por ejemplo, si especifica la opción "-u", le permitirá especificar un nombre de usuario o ID. En este ejemplo, enviamos la señal TERM a todos los procesos propiedad del usuario 'nadie':

# pkill -u nadie

Mátalos a todos

Killall usa el nombre del proceso en lugar del PID y "mata" todas las instancias del proceso con el mismo nombre. Por ejemplo, si está ejecutando varias instancias del navegador Firefox, puede eliminarlas todas con el comando:

#matar a firefox

En Gnome, puede reiniciar Nautilus con el comando:

# matar a todos los nautilus

matar

Xkill es una forma gráfica de "matar" una aplicación. Cuando escribe "XKill" en la terminal, el cursor del mouse se convertirá inmediatamente en una "cruz". Todo lo que tiene que hacer es hacer clic en "cruzar" en la aplicación infractora y la eliminará al instante. Si está interesado, puede agregar un atajo de teclado para habilitar la función XKill.

Otras señales que se utilizan

SIGABRT

Esta señal envía una señal al proceso para abortar la operación. ABRT generalmente se dirige al proceso en sí cuando llama a la función abort () del lenguaje de programación C para señalar un aborto, pero se puede dirigir desde cualquier proceso como cualquier otra señal.

SIGALRM, SIGVTALRM y SIGPROF

Se envía una señal ALRM, VTALRM y/o PROF a un proceso cuando expira el límite de tiempo especificado al llamar a una función de alarma (por ejemplo, setitimer).

ALARMA

Se envía cuando ha pasado la hora actual o el reloj.

VTALRM

Enviado cuando el tiempo de CPU utilizado por el proceso ha expirado.

PROFE

Enviado cuando expira el tiempo de procesador utilizado por el proceso y el sistema en nombre del proceso.

SIGBUS

Se envía una señal de BUS a un proceso cuando se produce un error de bus. Condiciones que dan como resultado esta señal, como una alineación de acceso a la memoria incorrecta o una dirección física faltante.

SIGCHLD

La señal CHLD se envía a un proceso cuando un proceso secundario termina, se interrumpe o se reanuda después de haber sido interrumpido. Un uso común de una señal es indicar al sistema operativo que limpie los recursos que utiliza un proceso secundario después de que haya finalizado sin una llamada explícita al sistema.

SIGCONT

La señal CONT le indica al sistema operativo que reinicie un proceso que fue suspendido previamente por una señal STOP o TSTP. Una de las características importantes de esta señal es controlar la operación en el shell de Unix.

SIGFPE

La señal FPE se envía a un proceso cuando realiza una operación aritmética errónea, como una división por cero.

SUSCRÍBETE

La señal HUP se envía a un proceso cuando se cierra su terminal de control. Originalmente fue diseñado para notificar un proceso después de una caída de línea sucesiva (HUP responsable de "colgarse"). En los sistemas modernos, esta señal suele significar que se ha cerrado el control del terminal pseudo o virtual.

SEÑAL

Señal ILL enviada a un proceso cuando intenta ejecutar comandos (instrucciones) maliciosos, desconocidos o privilegiados.

SEGUIR

La señal INT se envía a un proceso desde el terminal de control cuando el usuario desea terminar el proceso. Esto generalmente se inicia presionando Control-C, pero en algunos sistemas, "eliminar" o "romper".

sigilo

La señal KILL se envía a un proceso para terminar inmediatamente. A diferencia de SIGTERM y SIGINT, esta señal no se puede capturar ni ignorar, y el proceso de recepción no puede realizar ninguna limpieza después de recibir esta señal.

TUBO DE SEÑAL

La señal PIPE se envía a un proceso cuando intenta escribir en una tubería sin un proceso conectado al otro extremo.

SIGQUITAR

La señal QUIT se envía a un proceso desde su terminal de control cuando el usuario solicita el volcado del proceso.

SIGSEGV

La señal SEGV se envía a un proceso cuando hace una referencia de memoria virtual no válida o falla de segmentación, es decir, cuando realiza una falla de segmentación.

SEGUIMIENTO

La señal STOP le dice al sistema operativo que detenga el proceso para su posterior reanudación.

SIGTERM

La señal TERM se envía a un proceso para solicitar que finalice. A diferencia de la señal de interrupción, el proceso puede interpretarla o ignorarla. Esto permite que el proceso realice una ejecución "agradable" para dejar de liberar recursos y guardar el estado si es necesario. Cabe señalar que SIGINT es casi idéntico a SIGTERM.

SIGTSTP

Se envía una señal TSTP a su proceso terminal de control y le indica que se suspenda temporalmente. Esto generalmente lo inicia el usuario presionando Control-Z. A diferencia de SIGSTOP, este proceso puede registrar un controlador de señal o ignorar una señal.

SIGTTIN y SIGTTOU

En TTIN y TTOU, las señales se envían a un proceso cuando intenta leer o escribir, respectivamente, desde un terminal (tty) en segundo plano. Como regla general, esta señal solo puede ser recibida por procesos controlados por el panel de trabajo; Los demonios no tienen terminales de control y nunca deberían recibir esta señal.

SIGUSR1 y SIGUSR2

Las señales USR1 y USR2 se envían a un proceso e indican condiciones definidas por el usuario.

SIGPOLL

La señal POLL se envía a un proceso cuando ocurre un evento de E/S asíncrona.

SIGSYS

La señal SYS se envía a un proceso cuando pasa un argumento incorrecto a una llamada al sistema.

SIGTRAP

Una señal TRAP se envía a un proceso cuando ocurre una condición que el depurador solicitó que se le informara, por ejemplo, cuando se ejecuta una función en particular o cuando cambia cierto valor de una variable.

SIGURG

La señal URG se envía a un proceso cuando el socket tiene datos urgentes o fuera de rango disponibles para lectura.

SIGXCPU

La señal XCPU se envía a un proceso cuando utiliza la CPU durante más de un cierto período de tiempo establecido por el usuario. La llegada de la señal XCPU garantiza que el proceso guarde rápidamente todos los resultados intermedios y finalice correctamente antes de que el sistema operativo lo finalice con una señal SIGKILL.

SIGXFSZ

La señal XFSZ se envía a un proceso cuando un archivo crece (más que el valor especificado) que el valor máximo permitido.

SIGRTMIN a SIGRTMAX

Las señales RTMIN - RTMAX son para uso personalizado. Son señales en tiempo real.

Señales misceláneas

Las siguientes señales no están estandarizadas por POSIX, pero a veces se usan en algunos sistemas.

SIGEMT

La señal EMT se envía en el proceso cuando se produce una interrupción del emulador.

SIGINFO

La señal INFO se envía en el proceso cuando se recibe una solicitud de estado del terminal de control.

SIGPWR

La señal PWR se envía en el proceso cuando el sistema experimenta un corte de energía.

SIGLOST

La señal LOST se envía a un proceso cuando se pierde un "bloqueo de archivo".

SIGWINCH

La señal WINCH se envía a un proceso cuando su terminal de control cambia de tamaño.

Envío de señales desde el teclado

Las señales se pueden enviar desde el teclado. A continuación se enumeran algunos valores predeterminados estándar. Los métodos abreviados de teclado predeterminados para enviar señales de interrupción se pueden definir con el comando stty.

CTRL-C

Enviar SIGINT (interrupción). De forma predeterminada, esto hace que el proceso finalice.

CTRL-Z

Enviar SIGTSTP (suspender). De forma predeterminada, esto hace que el proceso suspenda todas las operaciones.

CONTROL-\

Enviar SIGQUIT (Salir). De manera predeterminada, esto hace que el proceso finalice inmediatamente y reinicie el kernel.

CTRL-T

Enviar SIGINFO (INFO). De manera predeterminada, esto hace que el sistema operativo muestre información sobre el comando. No es compatible con todos los sistemas.

conclusión

Cuando las aplicaciones se comportan mal y hacen que el sistema se congele, es muy tentador reiniciar la computadora y comenzar la sesión nuevamente. Con estos comandos de "matar", puede administrar mejor el mal comportamiento de las aplicaciones que causan o pueden causar un bloqueo del sistema. Con esto concluyo este tema "El comando kill en Unix/Linux".

A pesar de que Linux es más estable que Windows en términos de programas y varios servicios, todo sucede y, a veces, es necesario terminar el proceso de Linux. Esto puede ser necesario si el programa se bloqueó cuando inició el servicio del sistema en segundo plano a través de la terminal, y no en el sistema de inicialización, y en muchos otros casos, cuando es más fácil eliminar el proceso de Linux, reinicie todo el sistema.

En este artículo, veremos algunas de las formas más comunes de finalizar un proceso de Linux. Describiremos en detalle cómo se detiene el proceso y cómo hacer todo bien.

El control de procesos en el sistema operativo Linux se realiza mediante señales. Incluida la finalización de cualquier trámite. Las señales son enviadas por el sistema, pero también pueden ser enviadas por el usuario usando comandos especiales o incluso atajos de teclado en la terminal. Cuando se indica que un proceso termina, debe realizar algún trabajo preparatorio.

Es necesario finalizar los procesos secundarios, eliminar archivos temporales, sockets, etc. Pero dependiendo de la complejidad de la situación, es posible que el proceso no responda a todas las señales. Considere las señales principales que se utilizan para terminar el proceso:

  • SEGUIR- la señal de terminación más inocua, significa Interrupción. Se envía a un proceso iniciado desde una terminal usando el atajo de teclado Ctrl+C. El proceso completa correctamente todas sus acciones y devuelve el control;
  • SIGQUIT- esta es otra señal que se envía a través de un atajo de teclado a un programa que se ejecuta en la terminal. Le dice que termine y el programa puede terminar con gracia o ignorar la señal. A diferencia del anterior, genera un volcado de memoria. Método abreviado de teclado Ctrl+/;
  • SUSCRÍBETE- informa al proceso que la conexión con el terminal de control está interrumpida, enviado principalmente por el sistema cuando la conexión a Internet está interrumpida;
  • SIGTERM- termina el proceso inmediatamente, pero es manejado por el programa, lo que le permite terminar los procesos secundarios y liberar todos los recursos;
  • sigilo- también finaliza inmediatamente el proceso, pero, a diferencia de la opción anterior, no se transfiere al proceso en sí, sino que lo procesa el núcleo. Por lo tanto, los recursos y los procesos secundarios siguen ejecutándose.

Es importante comprender que debe darle al proceso la oportunidad de completarse correctamente. Es deseable que se liberen puertos y sockets, se cierren y se eliminen los archivos temporales. Por lo tanto, nunca envíe un SIGKILL inmediatamente. Envíe las señales de terminación en la secuencia indicada anteriormente.

En primer lugar ctrl+c, si es posible, entonces SIGTERM - aunque finaliza el proceso, lo hace culturalmente, y solo como último recurso SIGKILL. Y ahora veamos cómo eliminar un proceso mediante pid Linux en la práctica. Si siempre usa SIGKILL, entonces le viene a la mente esta imagen:

¿Cómo matar un proceso de Linux?

La utilidad kill se usa para señalar procesos en Linux. Su sintaxis es muy sencilla:

$ matar -pid_process señal

La señal es una de las señales anteriores para terminar el proceso. Por defecto, si no se especifica este parámetro, se utiliza la señal SIGTERM, que es muy correcta. También necesitamos especificar qué proceso terminar. Para esto, se utiliza un identificador de proceso único: PID.

Digamos que tenemos una utilidad de ping en ejecución. Queremos terminar con matar. Luego, primero averiguamos su ID usando el comando ps:

ps auxiliar | grep hacer ping

La primera línea mostrará la utilidad de ping en sí, y la segunda línea mostrará el programa ps en sí. Tomamos el PID deseado y terminamos el proceso usando SIGTERM:

matar -TERM 20446

Y solo si después de este comando el proceso continúa bloqueado, y puede verificar esto ejecutando ps. Solo que ahora puedes SIGKILL:

matar -matar 20446

Ahora comprobamos de nuevo:

Si el proceso se ejecuta como root, entonces, naturalmente, debe usar sudo. No siempre es conveniente matar un proceso por su PID, al menos porque aún necesita averiguar este PID. Podríamos usar xargs para hacer muchas construcciones complejas para calcular el pid automáticamente a partir del nombre del proceso y terminarlo de inmediato, pero esto no es necesario. Ya hay utilidades especiales.

Cómo matar un proceso con pkill

La utilidad pkill es un envoltorio para matar, se comporta exactamente igual y tiene la misma sintaxis, solo necesita pasar el nombre del proceso como ID del proceso. La utilidad escanea el directorio proc y encuentra el PID del primer proceso con ese nombre, luego le envía un SIGTERM. Entonces puedes matar un proceso llamado Linux. Por ejemplo, si queremos terminar el mismo ping:

También puede configurar manualmente el tipo de señal:

pkill-TERM ping

En lugar de ps, puede usar la utilidad pgrep para encontrar el pid del proceso, asegúrese de que nuestro programa esté terminado:

Pero si el programa ha creado varios procesos para usted, por ejemplo, el navegador Chrome o Firefox crean un proceso separado para cada una de las pestañas, entonces esta utilidad no ayudará mucho. Aquí está la siguiente opción.

Cómo detener un proceso con killall

killall funciona de manera similar a las dos utilidades anteriores. También toma el nombre del proceso como parámetro y busca su PID en el directorio /proc. Pero esta utilidad detectará todos los procesos con ese nombre y los terminará. Por ejemplo:

Como puede ver, hay varios procesos en ejecución, queda detener el proceso de Linux con killall:

El comando finalizará todas las utilidades de ping en ejecución, puede verificar esto ejecutando pgrep nuevamente:

conclusiones

En este artículo, vimos cómo eliminar un proceso de Linux. A veces esta tarea puede ser muy útil, pero es importante entender que debe hacerse correctamente. Esto no quiere decir que pasar SIGKILL en lugar de SIGTERM sea muy peligroso, pero no debería hacerlo. Espero que esta información te haya sido útil.

El argumento -9 (o KILL) del comando kill solo debe usarse en sistemas compatibles con POSIX si es absolutamente necesario. ¿Por qué? La señal KILL no puede ser manejada por el proceso. Esto significa que después de finalizar un proceso con kill -9 , los procesos secundarios quedarán en la memoria y quedarán huérfanos, el sistema de archivos se llenará de archivos temporales, los segmentos de memoria compartida estarán activos, los sockets se colgarán y atexit(3 ) no ser ejecutado en absoluto. Como resultado, existe el riesgo de encontrar problemas inesperados y difíciles de depurar.

En su lugar, use la señal predeterminada TERM y use KILL solo si las señales menos problemáticas resultan ineficaces:

$ matar 6738
$ matar -INT 6738
$ matar -HUP 6738
$ matar -MATAR 6738

Si incluso la señal KILL no logra eliminar el proceso, significa que lo más probable es que el proceso esté atascado en una operación de E/S o se encuentre en algún otro estado no terminado. Es posible que deba reiniciar o forzar el desmontaje de la unidad de red con errores.

El uso predeterminado de kill -KILL es aceptable cuando se trata de una aplicación problemática, por ejemplo, las versiones anteriores de Netscape a menudo solo terminaban con la señal KILL. Sin embargo, esta es una rara excepción a la regla: use KILL solo en aquellas aplicaciones conocidas.

Problemas que ocurren al terminar procesos

El envío secuencial de diferentes señales puede causar los siguientes problemas: en primer lugar, el proceso puede tardar segundos, o incluso decenas de segundos, en terminar correctamente. Un producto que he usado tardó más de 30 segundos en completarse correctamente después de recibir la señal TERM. Afortunadamente, esta función se descubrió durante las pruebas, por lo que se escribió un script adecuado para este caso. En segundo lugar, a veces hay situaciones en las que el proceso anterior terminó, mientras que el nuevo proceso tomó su ID en el intervalo entre las señales TERM y KILL. Los sistemas con una alta rotación de procesos y los sistemas en los que el kernel asigna PID aleatoriamente, como OpenBSD, corren un riesgo particular. Verificar el nombre del proceso o su PPID no siempre ayuda, ya que el nuevo proceso puede ser una bifurcación del mismo padre y tener el mismo nombre, por lo que los scripts particularmente paranoicos también pueden verificar el tiempo de creación del proceso u otros metadatos antes de enviar la señal. Quizás estas situaciones sean raras, pero vale la pena considerarlas si tiene que lidiar con un proceso crítico.

Señales de terminación de proceso

Las señales de finalización del proceso se pueden identificar por nombre o número de secuencia: kill -1 y kill -HUP son equivalentes. Sin embargo, usar el nombre de la señal es más seguro, ya que es fácil escribir mal el argumento -1 y enviar la señal a otro proceso o incluso a un grupo de procesos. Además, trate siempre de usar el nombre en los scripts, ya que esto lo ayudará a comprender mejor qué tipo de señal se envía a quienquiera que esté leyendo su código.

La señal HUP bloquea el shell, por lo que es una buena manera de borrar un shell que está colgado esperando una entrada o para cerrar una sesión SSH.

Para obtener más información acerca de las señales de finalización del proceso, consulte

Sea como fuere, tarde o temprano nos enfrentamos a la necesidad de matar un proceso con errores o colgado en linux. Sí, algunas aplicaciones en Linux a veces se bloquean, a pesar de la estabilidad de su estabilidad. Es en estos casos que necesitarás una maravillosa utilidad. Matar. Veamos cómo usar esta utilidad.

Cada proceso en linux tiene su propio identificador llamado PID. Antes de que pueda detener un proceso, debe definirlo PID. La conclusión es que necesitamos encontrar este identificador, por ejemplo, abrir cualquier programa e intentar encontrar su identificador.

ID de proceso pendiente

Para buscar necesitamos comandos ps y grep. Equipo PD- nos mostrará una lista de procesos activos en el sistema e información sobre ellos, y el comando grep- buscará los resultados del comando PD. Así que abramos una terminal ctrl+alt+t) y mira los procesos activos

p.d. axu

Como ya habrás notado, la lista es muy grande y desplazarse por ella para encontrar el proceso que necesitamos es una pérdida de tiempo, para ello usaremos un maravilloso programa grep. Para encontrar el proceso que necesitamos, después de escribir grep, especifique la aplicación que estamos buscando. Usando Viber como ejemplo, se ve así:

ps axu | viber grep polo 22685 0,0 1,9 647748 76620 ? Sl 13:01 0:04 /usr/bin/python /usr/bin/viberwrapper-indicator pol 22697 3.0 5.4 5402084 216120 ? Sl 13:01 4:52 /opt/viber/Viber pol 24068 0.0 0.0 17192 2216 pts/0 S+ 15:41 0:00 grep --color=viber automático

En la primera línea, la aplicación viberwrapper-indicator lanzada, puede leer sobre esta aplicación. La segunda línea es directamente el propio Viber, que hoy “extinguiremos”, pero ¿cuál es la tercera línea? El tercer proceso es el proceso mismo. grep, ya que especificamos la palabra viber como parámetro de búsqueda y grep se encontró en la salida del comando PD.

Hay otra manera más fácil de averiguar PID el proceso es un comando pidof, que toma el nombre del proceso como parámetro y genera su PID. Tenga cuidado con el caso, si el nombre del proceso comienza con una letra mayúscula y lo escribe con una minúscula (o viceversa), entonces pidof no lo tomará

pido de Viber

Como ya habrás notado, obtuve 3 líneas con la aplicación Viber activa

Terminación del proceso o, más simplemente, "Asesinato"

Ahora conocemos el ID del proceso de Viber y tenemos la oportunidad de "matarlo":

matar 22697

En general, el comando kill tiene como objetivo enviar una señal a un proceso. Por defecto, si no especificamos ningún atributo, se envía una señal SIGTERM (de la palabra terminación - terminación). SIGTERM le dice al proceso que termine. Cada señal tiene su propio número. SIGTERM es el número 15. Lista de todas las señales (y sus números) que el comando puede enviar matar, se puede deducir ejecutando matar -l. Para enviar una señal SIGKILL (numerada 9) al proceso 22697, ejecute:

matar -9 22697

La señal SIGTERM puede no detener el proceso (por ejemplo, al interceptar o bloquear la señal), SIGKILL siempre mata el proceso, ya que no puede ser capturado ni ignorado.
Puede ver la lista completa de atributos ejecutando el comando

matar -l