Todos hemos tenido esos días en los que nuestro ordenador funciona excepcionalmente lento y tartamudea a la hora de realizar incluso las tareas básicas. En Windows, sólo tienes el Administrador de tareas de Windows para inspeccionar y matar procesos que no son tan importantes pero que consumen enormes cantidades de memoria. Sin embargo, en Linux, tienes todo un arsenal de comandos y herramientas GUI para gestionar estas tareas. En este artículo, mostraremos algunos métodos sencillos de línea de comandos (CLI) así como métodos GUI para cómo matar un proceso en Linux.
Terminar un Proceso en Linux (2023)
Pero antes de sumergirnos en el mundo de la gestión de procesos en Linux, vamos a entender qué es exactamente un proceso y qué es un ID de proceso en los sistemas Linux.
Qué son los procesos en Linux
En Linux, cada instancia en ejecución de un programa se conoce como "proceso", mientras que cada archivo ejecutable se conoce como programa. Cuando se ejecuta cualquier programa, se crea un proceso y a cada proceso se le asigna un número de identificación único de 5 dígitos conocido como "ID de proceso". Cuando un proceso ha terminado de ejecutarse o se termina forzosamente, su ID de proceso se asigna al siguiente proceso en la línea.
{}
Matar Proceso a través de la Línea de Comandos en Linux
Aunque el uso de la terminal a veces puede parecer intimidante en comparación con el uso de herramientas GUI para las tareas básicas, la gestión de diversos procesos se vuelve mucho más fácil una vez que tenga una comprensión de los comandos y sus diversas opciones.
Señales de Terminación
Cuando se intenta matar un proceso, ya sea desde la GUI o la CLI en Linux, el núcleo envía una señal de terminación al proceso. El proceso actúa en consecuencia, dependiendo de la señal recibida. A cada una de estas señales se le asigna un número específico para que el programa lo entienda rápidamente. Existen numerosos tipos de señales de terminación, pero aquí sólo hemos explicado las esenciales:
eñal | Valor numérico | Descripción |
---|---|---|
SUSCRÍBETE | 1 | Significa 'Signal Hangup' Se envía cuando el terminal está cerrado. |
SEGUIR | 2 | Significa 'Interrupción de señal'. Se envía cuando el usuario finaliza el proceso. |
sigilo | 9 | Significa 'Signal Kill' Se envía cuando necesita salir de un proceso inmediatamente |
TÉRMINO | 15 | Significa 'Terminación de señal'. Se envía cuando necesita terminar un proceso y liberar los recursos consumidos. |
SEGUIMIENTO | 19 – para ARM, x86 17 – para ALPHA 23 – para MIPS 24 – para PA-RISC |
Significa 'Señal de parada'. Se envía cuando necesita pausar un proceso y reanudarlo más tarde. |
Identificar los ID de proceso
Antes de finalizar un proceso, debe conocer algunos detalles del proceso, como la ID del proceso, el tiempo de ejecución, etc. Para conocer los detalles de un proceso, use el ps
comando:
ps
Con el comando ps, debe buscar el proceso desplazándose y anotando su nombre, lo que podría ser engorroso. En su lugar, incluso puede usar el grep
comando con el ps
comando en una canalización, como se muestra a continuación:
ps | grep <process_name>
Para simplificar las cosas, hay un comando separado que muestra solo la identificación del proceso de cualquier proceso en ejecución que necesite saber. La sintaxis para usar el pidof
comando es:
pidof <process_name>
Terminar el proceso usando el comando matar
Una vez que haya anotado la ID del proceso que desea finalizar, el comando más común utilizado para finalizar programas en su sistema Linux es el comando kill. La sintaxis para usar el comando kill es:
kill <signal> <process_id>
El <signal>
parámetro es opcional y el comando kill envía la señal SIGTERM (15) por defecto. Puede enviar cualquier otra señal por su valor numérico o el nombre real de la señal de la tabla anterior.
Terminar el proceso usando el comando pkill
Si cree que buscar la identificación del proceso es un inconveniente, puede usar el comando pkill. Busca los procesos que coinciden con un patrón y luego lo elimina. La sintaxis para usar el comando pkill es:
pkill <options> <pattern>
Algunas de las opciones comunes para emparejar con el comando pkill son:
Opción | Descripción |
---|---|
-n |
Selecciona solo los últimos procesos que coinciden con la identificación del proceso |
-u |
Selecciona los procesos propiedad de un usuario en particular |
-x |
Selecciona procesos que coinciden exactamente con el patrón. |
Esto es particularmente importante cuando varios usuarios están trabajando en diferentes instancias del mismo programa en el mismo sistema y una de las instancias comienza a tener un comportamiento inesperado. Por ejemplo, en la siguiente captura de pantalla, estamos eliminando la instancia "gedit" propiedad del usuario 'intel' usando el comando pkill en Linux:
pkill -u intel gedit
Terminar el proceso usando el comando killall
El killall
comando funciona de manera similar al kill
comando, pero elimina todos los procesos que coinciden con el nombre del proceso, independientemente del usuario. Por defecto, envía la señal SIGTERM si no se especifica lo contrario. Una cosa interesante a tener en cuenta es que el killall
comando nunca puede matarse a sí mismo, pero puede terminar otras instancias del killall
comando. La sintaxis para usar el killall
comando es:
killall <options> <process_name>
Algunas de las opciones para emparejar con el comando killall son:
Opción | Descripción |
---|---|
-r |
Interpreta el nombre_del_proceso como un patrón de expresiones regulares y luego elimina los procesos que coinciden con el patrón. |
-u |
mata el proceso especificado propiedad de un propietario especificado. |
-o |
Mata los procesos especificados más antiguos (iniciados antes) que un tiempo específico. |
-y |
Mata los procesos especificados más jóvenes (iniciados después) del tiempo específico. |
El comando killall puede ser útil para terminar una serie del mismo proceso o incluso todos los procesos que pertenecen a un propietario específico. Aquí, en nuestro ejemplo, estamos matando todos los procesos de "dormir durante 500 segundos" usando el comando killall en Linux:
killall -v sleep
Terminar el proceso de Linux usando el comando top/htop
Este método de eliminación de procesos es útil cuando no tiene idea de qué procesos consumen el máximo de recursos. En ambos comandos, puede navegar a través de todos los procesos en ejecución o incluso procesos zombis y puede finalizarlos rápidamente. Para usar el comando superior para monitorear sus recursos, use la sintaxis en la Terminal:
top
Comprender la salida:
La salida principal del comando superior se divide en columnas que son:
- PID : muestra el ID del proceso en ejecución
- Usuario : muestra el propietario del proceso.
- PR : muestra el valor de prioridad del proceso asignado por el sistema operativo
- NI : muestra los valores agradables que son como asignar valores espaciados por el usuario para controlar manualmente la prioridad de una tarea.
- VIRT : muestra la cantidad de memoria virtual utilizada por el proceso.
- RES : muestra la cantidad de memoria física utilizada por el proceso
- SHR : muestra la cantidad de memoria compartida por otros procesos
- S – muestra el estado actual del proceso que puede ser:
- D – sueño ininterrumpido
- R- corriendo
- S- durmiendo
- T - detenido
- Z-zombis
- %CPU : muestra la cantidad de CPU utilizada por el proceso en porcentaje
- %MEM : muestra la cantidad de RAM utilizada por el proceso en porcentaje
- TIME+ : muestra el tiempo total de ejecución del proceso
- Comando : muestra qué comando se invocó para el proceso.
Si no conoce el ID de proceso de la tarea que desea eliminar, navegue por la lista con las teclas de flecha o busque el nombre del proceso en la tabla de procesos en Linux.
Para buscar el nombre del proceso, presione 'L' en el teclado y escriba el nombre del proceso que desea buscar. Una vez que encuentre el proceso nefasto, presione 'k' en el teclado para finalizar el proceso . Ahora, ingrese el ID del proceso o déjelo en el proceso resaltado actualmente y presione 'ENTRAR'. Luego, ingrese la señal de terminación y luego presione 'ENTER' para terminar el programa. Para volver a la terminal, presione 'q' en el teclado.
Aunque el top
comando muestra detalles como la identificación del proceso, el consumo de memoria y más para todos los procesos en ejecución, no es adecuado para principiantes ya que no muestra ninguna asignación de teclas ni cómo usarlo. Por otro lado, el htop
comando tiene una interfaz más fácil de usar, incluso para una herramienta de línea de comandos. Además, muestra todos los detalles en una vista separada, por lo tanto, no abarrota la ventana de la terminal. No viene preinstalado en la mayoría de las distribuciones, y debe usar el siguiente comando para instalarlo htop
en Linux:
sudo apt install -y htop
Para usar htop para administrar procesos en Linux, use el siguiente comando:
htop
Para finalizar un programa, navegue hasta el nombre del proceso que desea finalizar, presione 'F9' y luego presione Intro. Si necesita buscar y eliminar cualquier programa, presione 'F3' en el teclado, escriba el nombre y presione Enter. El nombre del proceso se resaltará
, presione F9 y luego presione Entrar en el teclado para finalizar el proceso.
Matar un proceso a través del monitor del sistema en Linux
Si cree que el método de la línea de comandos es difícil para usted, puede usar la herramienta de monitoreo del sistema integrada que está disponible en todas las distribuciones de Linux. Para saber cómo funciona, abra la herramienta del monitor del sistema desde el menú Aplicaciones y siga los pasos a continuación.
2. Luego, recibirá un mensaje de confirmación si desea finalizar el proceso o no. Continúe y haga clic en el gran botón rojo "Finalizar proceso" para finalizar el proceso en Linux.
Preguntas frecuentes
¿Cómo detengo todos los procesos en Linux?
Si necesita detener todos los procesos (excepto el shell de inicio de sesión, init y los procesos específicos del kernel) para un usuario específico en Linux, use el comando pkill o el comando killall según la sintaxis:
pkill -u <username>
killall -u <username>
Si necesita eliminar todos los procesos de todos los usuarios, incluido el sistema de inicio, presione las teclas 'ALT + Prt Sc + o' en el teclado.
¿Está bien terminar un proceso?
Cuando cierra cualquier proceso en segundo plano no esencial o un proceso de usuario que consume mucha memoria del sistema, libera los recursos que ahora pueden utilizar otros procesos. Pero, antes de cerrar cualquier proceso, asegúrese de no estar matando un proceso esencial del sistema operativo.
¿Cuáles son los procesos en segundo plano en Linux?
En Linux, los procesos en segundo plano son procesos que pueden ejecutarse sin la instancia de shell ni la intervención del usuario. Se pueden ver usando cualquiera de los comandos: top, htop, ps, etc.
¿ Qué es un proceso zombie ?
Un proceso que ha sido eliminado por el usuario pero que aún ocupa memoria se conoce como proceso zombie.
¿Qué hace CTRL + Z en Linux?
Cuando usa CTRL + Z en Linux, envía la señal SIGTSTP que suspende el proceso y lo envía en segundo plano. Cuando un proceso está en un estado suspendido en segundo plano, no puede eliminar el proceso hasta que vuelva a estar en primer plano.
Matar los procesos que acaparan la memoria es una tarea bastante crucial que todo usuario debería aprender. En este artículo, hemos mostrado tanto el método de la línea de comandos, incluidos comandos como killall y pkill, como los métodos de la GUI para eliminar procesos en Linux. Incluso hemos detallado cómo usar herramientas populares como top y htop para administrar procesos en su PC con Linux. Si tiene algún problema al usar estas herramientas para eliminar un proceso, háganoslo saber en los comentarios a continuación.