GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo matar un proceso en Linux? Comandos para Terminar

Introducción

Si un proceso de Linux deja de responder o consume demasiados recursos, es posible que deba eliminarlo.

La mayoría de los procesos tienen sus propios métodos de apagado. Desafortunadamente, los procesos pueden funcionar mal y no permitir que se cierren. Si un proceso en segundo plano en ejecución no responde, es necesario usar un comando para eliminarlo.

Aquí hay una guía completa sobre cómo eliminar un proceso de Linux usando la línea de comando.

¿Qué procesos puede eliminar en Linux?

Antes de matar o finalizar un proceso, debe considerar los permisos.

Un usuario root puede eliminar todos los procesos. Puede agregar sudo antes de un comando para ejecutarlo como root, u obtenga un shell de root con su . Luego ejecuta el comando.

Matar un proceso envía un mensaje de terminación al proceso dado. Hay varios tipos de mensajes de finalización, incluidos:

  • SIGKILL SIGKILL es la forma definitiva de matar un proceso. Siempre matará un proceso y lo hará abruptamente, generando un error fatal. SIGKILL siempre debería funcionar. Si no funciona, el sistema operativo ha fallado.
  • SIGTERM SIGTERM intenta eliminar un proceso, pero a diferencia de SIGKILL, puede bloquearse o manejarse de otra manera. Se puede considerar una forma más suave de intentar terminar un proceso.

Para la mayoría de los propósitos, SIGKILL será el método más rápido y efectivo para terminar el proceso.

Paso 1:Ver los procesos Linux en ejecución

El top El comando es la forma más fácil de obtener una descripción completa de los procesos que se están ejecutando actualmente.

Para ver una lista de todos los procesos actualmente en ejecución, use el comando:

top

El comando superior revelará los ID de proceso y los usuarios, además de la cantidad de memoria y potencia de CPU que utiliza cada proceso.

Para matar procesos directamente desde la parte superior interfaz, presione k e ingrese el ID del proceso.

Para salir de la parte superior interfaz, presione q .

Paso 2:Ubique el proceso para matar

Antes de que pueda eliminar un proceso, debe encontrarlo. Hay varias formas de buscar un proceso en Linux. Los procesos pueden ubicarse por un nombre de proceso (o un nombre de proceso parcial) o una ID de proceso (también conocida como "pid").

Localice un proceso con el comando ps

El ps El comando muestra información similar a top , aunque no tendrá la forma de una interfaz. En cambio, el ps El comando proporciona una lista completa de los procesos en ejecución, formateada según las etiquetas que agregue.

ps <options>

Las opciones más comunes para agregar a esto son "-aux":

  • -a . Vea los procesos de todos los usuarios en lugar de solo el usuario actual.
  • -u . Proporcionar información detallada sobre cada uno de los procesos
  • -x . Incluya procesos que no estén controlados por usuarios sino por demonios.

Por ejemplo, el comando ps -aux devolverá una lista detallada de todos los procesos.

Encontrar el PID con pgrep o pidof

El comando de Linux pgrep es una forma más compleja de encontrar un proceso. Este comando devolverá procesos basados ​​en criterios de selección específicos, lo que se conoce como el patrón. El patrón es una expresión regular, como a* , donde * sería un comodín.

pgrep <options> <pattern>

Estas son las opciones que se pueden usar con este comando:

  • -l . Enumere los nombres de los procesos y los PID.
  • -n . Devuelve el proceso más nuevo.
  • -o . Devuelve el proceso más antiguo.
  • -u . Encuentre solo procesos que pertenezcan a un usuario específico.
  • -x . Solo busque procesos que coincidan exactamente con el patrón dado.

El comando pgrep -u root muestra todos los procesos propiedad de root. El comando pgrep -u root 'a*' devuelve procesos propiedad de root que comienzan con la letra "a".

El pidof El comando se usa para encontrar la ID de un proceso, siempre que sepa el nombre del proceso.

pidof <options> <program>

Se pueden incluir algunas opciones, como:

  • -c . Solo devuelva PID dentro de un único directorio raíz.
  • -o . Omita ciertos PID (incluya los procesos para omitir después de la bandera).
  • -s . Solo devuelve un único PID.
  • -x . También devuelve PID de shells que ejecutan scripts.

Paso 3:utilice las opciones de comando de eliminación para terminar un proceso

Existen algunos métodos diferentes para eliminar un proceso en Linux, dependiendo de si conoce el nombre del proceso en ejecución, el pid del proceso o cuánto tiempo ha estado ejecutándose.

Comando Killall

El killall El comando se usa para matar procesos por nombre. Por defecto, enviará una señal SIGTERM. El killall El comando puede eliminar varios procesos con un solo comando.

killall <process>

Se pueden usar varias opciones con killall comando:

  • -e . Encuentre una coincidencia exacta para el nombre del proceso.
  • -I . Ignore mayúsculas y minúsculas cuando intente encontrar el nombre del proceso.
  • -i . Solicite una confirmación adicional al finalizar el proceso.
  • -u . Solo elimine los procesos que pertenecen a un usuario específico.
  • -v . Informar si el proceso se ha eliminado con éxito.

Además de matar procesos basados ​​en el nombre, killall El comando también se puede usar para matar según la edad del proceso, usando los siguientes comandos:

  • -o . Use este indicador con una duración para eliminar todos los procesos que se han estado ejecutando más de esa cantidad de tiempo.
  • -y . Use este indicador con una duración para eliminar todos los procesos que se han estado ejecutando menos de esa cantidad de tiempo.

El killall -o 15m El comando eliminará todos los procesos que tengan más de 15 minutos, mientras que killall -y 15m El comando eliminará todos los procesos que duren menos de 15 minutos.

Comando pkill

El pkill El comando es similar al pgrep comando, ya que eliminará un proceso en función del nombre del proceso, además de otros factores de calificación. Por defecto, pkill enviará la señal SIGTERM.

pkill <options> <pattern>

Las opciones de pkill incluyen:

  • -n . Solo elimine los procesos más nuevos que se descubran.
  • -o . Solo elimine el más antiguo de los procesos que se descubren.
  • -u . Solo elimine los procesos que son propiedad del usuario seleccionado.
  • -x . Solo elimine los procesos que coincidan exactamente con el patrón.
  • -signal . Envía una señal específica al proceso, en lugar de SIGTERM.

comando matar

Si conoce un ID de proceso, puede eliminarlo con el comando:

kill <processID>

El kill El comando matará un solo proceso a la vez con la ID de proceso dada. Enviará un SIGTERM Señal que indica a un proceso que se detenga. Espera a que el programa ejecute su rutina de apagado.

La -signal El comando se puede usar para especificar una señal que no sea SIGTERM.

matar -9 Comando Linux

kill -9 es un comando útil cuando necesita cerrar un servicio que no responde. Ejecútelo de manera similar a un kill regular comando:

kill -9 <processID>

O

kill -SIGKILL <processID>

El kill -9 el comando envía un SIGKILL señal que indica a un servicio que se apague inmediatamente. Un programa que no responde ignorará un kill comando, pero se cerrará cada vez que kill -9 se emite el comando. Utilice este comando con precaución. Omite la rutina de apagado estándar, por lo que se perderán todos los datos no guardados.

Su sistema operativo no funciona correctamente si una señal SIGKILL no cierra un servicio.

comando superior

El top El comando proporciona una interfaz a través de la cual un usuario puede navegar a través de los procesos que se están ejecutando actualmente.

top

Para eliminar un proceso específico, inserte k desde la interfaz superior y luego ingrese el ID de proceso deseado.

comando xkill

El xkill comando es un tipo especial de comando que cierra la conexión de un servidor dado a los clientes.

xkill <resource>

Si un servidor ha abierto varios procesos no deseados, xkill abortará estos procesos.

Si xkill se ejecuta sin especificar un recurso, luego se abrirá una interfaz que le permite al usuario seleccionar una ventana para cerrar.

Conclusiones clave sobre la finalización de un proceso de Linux

  • Cuando un proceso no se puede cerrar de otra manera, se puede eliminar manualmente a través de la línea de comandos.
  • Para eliminar un proceso en Linux, primero debe encontrar el proceso. Puedes usar el top , ps , pidof o pgrep comandos.
  • Una vez que haya encontrado el proceso que desea eliminar, puede eliminarlo con killall , pkill , kill , xkill o top comandos.
  • Al finalizar un proceso, puede enviar una señal de terminación de SIGHUP, SIGKILL o SIGTERM.
  • Necesita tener permiso para eliminar un proceso, que puede obtener mediante el uso de sudo comando.

Linux
  1. Cómo matar un proceso zombie en Linux

  2. Cómo encontrar y matar el proceso Zombie en Linux

  3. Comandos de Linux:cómo manipular la prioridad del proceso

  4. Cómo matar procesos en ejecución en Linux

  5. ¿Cómo matar un proceso en Linux usando el comando?

Cómo MATAR un proceso en Linux

Cómo matar o terminar un proceso de Linux:la guía definitiva

Comandos para la Gestión de Procesos en Linux

Cómo enviar procesos a segundo plano en Linux

Cómo matar procesos Zombie en Ubuntu

Cómo matar procesos en Linux usando kill, killall y pkill