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
opgrep
comandos. - Una vez que haya encontrado el proceso que desea eliminar, puede eliminarlo con
killall
,pkill
,kill
,xkill
otop
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.