Puedes manejar los procesos como visualizar, eliminar o filtrar desde la terminal de un modo diferente a usar ctrl + alt +suprimir. Te explicamos cómo lograrlo.
Ver los procesos activos en la terminal (ps)
El comando ps muestra los procesos que están activos en una tabla muy sencilla de entender, donde el la primera columna tenemos el process ID y en la última el nombre.
Ver procesos más detallados (top)
Si quieres ver una lista más detallada de los procesos con su consumo en CPU y en RAM, además del usuario que lo activó, usamos el comando top.
Aquí podemos filtrar por user. Si presionas la tecla “u” podrás escribir el nombre de usuario por el cual quieres buscar y si presionas la tecla “h” te mostrará un cuadro de ayuda para más opciones. Para salir presiona “q”.
Matar un proceso (kill)
Para matar un proceso usamos el comando kill seguido del PID del proceso que queremos matar.
Si estás usando Windows y tienes varias aplicaciones abiertas podrás usar la terminal para cerrarlas, pero para los que estamos usando WSL solo podemos acceder a los procesos que se ejecuten en la terminal.
Pero la teoría es la misma, buscamos el PID del proceso que queremos matar y lo matamos.
En este caso si ejecuto el comando kill 595 voy a cerrar la terminal.
Tabla de comandos para manejo de procesos en la terminal
Comando
Función
ps
Muestra una tabla con los procesos que se están ejecutando
top
Muestra una interfaz con los procesos que se están ejecutando más los recursos que consumen información adicional
kill
Mata el proceso que le indiques
Contribución creada por: Miguel Gonzalez.
Aportes 120
Preguntas 37
Ordenar por:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
Nivel de poder de algunos (para mi) programas para gestionar procesos: 4to: ps (Dios griego: Hephaestus) 3ro: top (Dios griego: Apollo) 2do: htop (Dios griego: Poseidon) 1ro: glanses (Dios griego: Zeus) lo malo de este es que consume bastante CPU, pero se ve genial y te dice que problemas ocurren XD.
.
(jajaja, si tienen otro, comenten cual es y su clasificación va)
Les recomiendo htop tiene una interfaz mucho más amigable, lo pueden descargar con: sudo apt install htop y para entrar al programa solo utilizan el comando htop
Quienes usan WSL: RECUERDA que estos comandos que nos enseño el profesor, nos mostrará solo lo que tenemos en UBUNTU, no más. Es decir no nos mostrará los procesos que estemos haciendo en Windows, porque Windows no se lo permite, cuando nos encontremos en un sistema Linux si lo hará. 😃 😃
Cuando se traba nuestro OS, normalmente terminamos procesos con el administrador de tareas 😆, en la terminal se puede hacer, pero es un poco diferente.
ps nos muestra los procesos que están corriendo actualmente. Cada proceso tiene un PID. Podemos ver los procesos que estén en el background (por ejemplo, CAT).
kill <PID> nos ayuda a terminar procesos fuera de nuestra terminal. 🛑
top <PID> nos muestra los procesos que están usando más recursos de nuestra computadora. Podemos filtrar los procesos (para ver como, usamos bandera h → help). 🆘
La terminal, sabiéndola usar bien, es más eficiente que el administrador de tareas.
htop es como top pero con esteroides. Debemos instalarlo. Tiene muchas más opciones 💪🏽
💀 Con kill -9 {idDelProceso} pueden eliminar procesos que se ponen rebeldes y no quieren acabarse con solo kill.
.
👀 Aunque OJO con este dato:
The kill -9 command sends a SIGKILL signal indicating to a service to shut down immediately. An unresponsive program will ignore a kill command, but it will shut down whenever a kill -9 command is issued. Use this command with caution. It bypasses the standard shutdown routine so any unsaved data will be lost.
PROCESS ID (PID): Cada proceso tiene un número asociado que se le asigna cuando es creado. Los PIDs son números enteros únicos para todos los procesos sistema. USER ID & GROUP ID: Cada proceso tiene que tener asociado unos privilegios que limiten el acceso al sistema de ficheros. Estos privilegios quedan determinados por el user ID y group ID del usuario que creo el proceso. PARENT PROCESS: Todo proceso es creado por otro proceso, el proceso padre (parent process). El primer proceso iniciado por el kernel cuando el sistema arranca es el programa init. Este proceso tiene el PID 1 y es el padre de todos los procesos del sistema. PARENT PROCESS ID: El PID del proceso que inicio el proceso hijo. ENVIROMENT: Cada proceso mantiene una lista de variables y sus correspondientes valores. El conjunto de estas variables recibe el nombre de process enviroment. Normalmente el entorno de un proceso hijo se hereda del proceso padre a menos de que se indique de otra forma. CURRENT WORKING DIRECTORY: Cada proceso tiene asociado un directorio por defecto, donde el proceso leerá/escribirá archivos, a menos que se le especifique explícitamente lo contrario. NICE NUMBER: Permite al usuario modificar la prioridad de ejecución de un proceso.
Comandos fundamentales:
top
El comando top es un clásico para mostrar los recursos usados por tu sistema y así poder ver cual de ellos consume más.
htop
Es un “top” mejorado, no suele venir instalado en las distribuciones Linux. Sobre todo es más fácil de interpretar que su hermano top y además puedes realizar operaciones como parar un proceso usando las teclas (la imágen que encabeza este post es una captura de htop).
ps
El comando más usado (y universal) para manipular procesos en Linux. Muestra todos los procesos y además puedes realizar operaciones con ellos. Recuerda que puedes enlazarlos con otros comandos (por ejemplo con “grep” para buscar un proceso específico) usando las famosas pipes o tuberías.
pstree
Este comando muestra la jerarquía de los procesos mediante una estructura de árbol. Si se especifica el PID de un proceso, el árbol empezará desde ese proceso, de lo contrario el árbol empezará por el proceso init (PID=1) y mostrará todos los procesos del sistema. Si se especifica un usuario valido se mostrará la jerarquía de todos los procesos del usuario.
kill
Comando para matar o parar un proceso, funciona dando su ID. El comando kill permite enviar un mensaje arbitrario a un proceso, o varios, con un PID igual a pids. El parámetro sigspec es el valor entero de la señal o el nombre de la señal que enviaremos al proceso.
pgrep
Devuelve el ID del proceso que coincide con la búsqueda.
pkill & killall
Estos comandos pueden matar procesos dando el nombre del mismo. Esta orden es ligeramente diferente a la orden kill por dos motivos; en primer lugar utiliza el nombre de proceso en lugar del pid, y además le envía la señal a todos los procesos que tengan el mismo nombre.
renice
Este comando cambia el valor “nice” de un proceso en ejecución. El valor “nice” determina la prioridad del proceso. Un valor de -19 es de muy alta prioridad, mientras que un valor 19 es de baja prioridad.
xkill
Si ejecutas este comando desde un terminal en modo gráfico, el cursor cambiará a un símbolo “X” y con él podrás matar cualquier programa gráfico abierto que tengas en tus escritorios(si no quieres matarlo, haz click con el botón derecho).
atop
Monitor de procesos en ASCII en tiempo real donde muestra CPU, memoria, capas de red, usuario, prioridad, etc para cada proceso activo.
Llamada fork
Cuando se llama la función fork, esta genera un duplicado del proceso actual. El duplicado comparte los valores actuales de todas las variables, ficheros y otras estructuras de datos. La llamada a fork retorna al proceso padre el identificador del proceso hijo y retorna un cero al proceso hijo.
Llamada exec
La familia exec…() es un conjunto de funciones que en esencia realizan la misma actividad ya que solo difieren en la forma de pasar sus argumentos, son utilizadas para poner en ejecución un proceso determinado, la característica es que las instrucciones del proceso que las invoca son sustituidas por las instrucciones del proceso indicado.
Llamadas wait y exit
Llamada al sistema exit
– La finalidad de exit() es poner fin a la existencia de un proceso.
– Está contenida en el fichero fuente: kernel/exit.c
– Implementada por la función sys_exit(), la llamada exit pasa por ser la llamada al sistema número 1.
– Sys_exit() a su vez invoca a do_exit pasándole el código de retorno
Perspectiva del Sistema Operativo: Cuando se invoca a la llamada exit(), el sistema operativo reacciona reclamando todos los recursos que tiene asociado el proceso que ha de finalizar.
Sintaxis: void exit ()
El valor devuelto al proceso padre será cero en caso de finalización normal y distinto a cero si finaliza debido a un error.
Cuando el proceso hijo termina le envía al padre una señal SIGCHLD y espera hasta que el valor estado sea aceptado por el padre, permaneciendo en estado zombie.
Introducción a la gestión de procesosWindows
La administración de procesos es algo crucial a la hora de poder explotar todas las características de nuestro hardware y sistema operativo, entonces se hace imperioso el poder entender ciertas características de los mismos.
TASKLIST y TASKKILL son dos de los comandos que incluye el ejecutable cmd.exe que resultan muy útiles y nos auxilian cuando nos vemos en problemas en Windows.
Podemos usarlos directamente en la consola de CMD o Símbolo del sistema, en archivos batch o en scripts, para administrar completamente los procesos y tareas ejecutándose en nuestro equipo.
Podemos con ellos obtener información y crear listas detalladas, detener aplicaciones, tareas y procesos aun cuando están bloqueados y no responden.
Utilizar el comando TASKLIST en Windows
TASKLIST, (del inglés listar tareas) muestra todas las aplicaciones ejecutándose en el equipo con el número de identidad del proceso (PID).
Es muy sencillo de usar, solo basta introducirlo y a continuación el parámetro necesario.
Si se usa sin ninguna opción muestra una lista similar a la que aparece en la pestaña Procesos delAdministrador de tareas.
Se muestra: el nombre del proceso, el PID (número de identidad del proceso) y la memoria usada.
Este comando nos muestra los procesos que la maquina esta corriendo actualmente. Al igual su ID. Nos ayuda a ver que procesos estan en segundo plano y a veces no vemos.
Si queremos matar un proceso usamos
kill#PID
Solo necesitamos copiar el PID que nos aparezca al usar “ps”
top
Nos muestra una vista con los procesos que están usando mas recursos. Si presionamos la tecla H nos muestra la ayuda con todas las opciones que tenemos. Si usamos la opción U nos deja filtrar por usuario, solo tendríamos que escribir el usuario.
El comando “htop” es la evolucion y nos deja terminar procesos de forma directa.
Dentro del comando ‘top’ se muestra el estado del ciclo de vida de un proceso, el cual significa:
.
“In the STAT column, you’ll see lots of values. A linux process can be in a number of different states. The most common state codes you’ll see are described below:”
.
R: running or runnable, it is just waiting for the CPU to process it
S: Interruptible sleep, waiting for an event to complete, such as input from the terminal
D: Uninterruptible sleep, processes that cannot be killed or interrupted with a signal, usually to make them go away you have to reboot or fix the issue
Z: Zombie, we discussed in a previous lesson that zombies are terminated processes that are waiting to have their statuses collected
T: Stopped, a process that has been suspended/stopped.
Nos muestra los procesos o los comandos que están corriendo en nuestra terminal actualmente.
Todo proceso tiene un ID, lo podemos encontrar como PID o Process ID.
$ ps
top
Nos da una interface más interactiva que ps en la que nos muestra los procesos que están usando más recursos.
$ top
Si apretamos la letra H veremos una pantalla con todos los comandos que podemos usar en top.
u
Podemos filtrar los procesos por usuario.
htop
Es la evolución de top.
Terminar un proceso
kill
Sirve para matar un proceso, una forma de matar proceso de una forma rápida es terminar con la terminal usando su PID.
$ kill PID
También les comparto apuntes del mismo curso pero del 2019.
Clase:
Administración de procesos en background y foreground
Ejecución en primer plano
Cuando ejecutamos un proceso en la terminal y este tarda no podemos hacer nada en la misma, solamente esperar a que termine el proceso, a esto se lo llama ejecución en primer plano.
Ejecución en segundo plano o background
En caso de que queramos seguir usando la terminal mientras se está ejecutando un poseso podemos usar & al final de nuestro comando.
$ mysql -h 127.0.0.1 -u root -p1234 < dump1.sql &
Otro caso en el que aplicamos esto es cuando usamos un servidor que tiene que estar ejecutándose siempre para que el sistema funcione a este tipo de procesos se los conoce como servicios, demonios o demon.
CTRL + Z
Con este comando podemos también mandar un proceso a background una vez ya hallamos lanzado el proceso.
fg
Lo usamos para volver al proceso que teníamos en segundo plano.
Herramientas
Estas son herramientas para ver los procesos que están en ejecución.
ps
Colocando simplemente este comando podemos ver los procesos que tenemos abiertos.
ps ax
Con este comando podemos ver todos los procesos del sistema, me da muchas más información que ps.
Aparte de decir el proceso que está corriendo también nos dice el archivo que se está ejecutando.
Este es una utilidad de tipo batch
$ ps ax | grep expresión-regular
top
Este es una utilidad interactiva, va mostrando en tiempo real como los procesos van cambiando. Muestra como va la computadora mostrando la memoria ocupada, la libre.
Desde aquí podemos matar procesos si lo deseamos o ver más información.
Detener procesos
CTRL + C
Detengo un proceso.
Herramientas
Usando el comando ps ax podemos ver al proceso que está colgado o en un bucle infinito con su respectivo número que lo identifica en la columna de PID.
Ambas de las siguientes herramientas son parecidas.
kill
Funciona enviando señales a los procesos para que se detengan, los procesos pueden estar escuchando las señales (tiene que ver como funcionan los procesos en UNIX) para no tener que interrumpirse violentamente, sino que terminen lo que estaban haciendo y detenerse.
Este comando detiene o mata a un proceso en ejecución.
$ kill -9 PID
killall
Este hace básicamente lo mismo que kill solo que a este se le pasa el nombre del archivo ejecutable que está disparando el proceso.
Todos los comandos de “terminación de procesos” como kill, htop, pkill, killall, etc, siempre envian una ‘señal de terminación’ al proceso, esa señal de terminación es conocida como SIGTERM. Para terminar un proceso forzadamente, hay que enviarle una señal llamada SIGKILL, como opción, que para los comandos es con -9.
Ejemplos:
kill -9 PID pkill -9 PNAME killall -9 PID/PNAME,
Donde: PID es el identificador numérico del proceso PNAME es el nombre del proceso que se quiere eliminar que puede ser una expresión regular
En htop, al solicitar ‘kill’ de un proceso con ‘F9’, dice en la parte inferior enter | send || Esc | Cancel, y al mover las teclas hacia arriba y abajo permite seleccionar que señal de terminación enviar… puede presionarse directamente el numero de la señal y luego enter o buscar con las flechas. Detalles pqueños de los Sistemas Operativos (Windows es PEOR en cierto modo, aunque powershell soluciona mucho, y tiene una opción o ‘flag’ para forzar cierre).
Les recomiendo MUCHISIMO, y no entiendo porque no se toco en este clase, que exploren el tema de señales, y como utilizarlas para manipular procesos.
.
Por ejemplo; la señal 9 o SIGKILL nos permite forzar el asesinato de un proceso, aunque este ignore el comando kill en un principio.
.
Cuando comenzó la clase pudimos notar que por desgracia el profesor no pudo eliminar el proceso cat, y es porque basicamente lo estaba ignorando, y necesitaba utilizar la señal 9 como opción: “kill -9 20425”
En mi caso me salian un monton de zsh abiertas, corriendo 😮
Las iba cerrando una por una y hasta que mate la ultima se cerro mi terminal, esas zsh eran todas las bash que venia usando ya ratos y se quedaban trabajando en segundo plano? Interesante.
Correspondiente al proceso de CAT, no me permitió cerrarlo, inclusive en este video aun marcaba como activo, intente cerrarlo con htop y tampoco me funciono, sin embargo, investigando, use la siguiente instrucción:
kill -9 1577
y me permitió cerrar el proceso por PID.
'
Inclusive se puede usar para cerrar múltiples procesos por PID a la vez:
En mi caso uso WSL y no me funcionó con solo kill. Tuve que escribir una opción más.
kill -KILL 641
Esto cierra el proceso con el pid 641 de manera abrupta.
na vez necesite matar todos los procesos java y use este comando
pkill -9 -f java
Claro esta que toca usarlo con responsabilidad y sabiendo que se hace en mi caso era un proceso batch que se ejcutaba en una máquina que se habia bloqueado y estaba lanzando varios procesos por un cron
Si el proceso está en segundo plano y se requiere detener o es un proceso que está colgado y se debe detener: ejecutar el comando “ps ax” para averiguar el numero del comando (Campo PID) y después se ejecuta el comando: kill -9 #proceso, lo cual detendrá obligatoriamente el proceso indicado.
Aunque yo utilizo en el trabajo Windows, la terminal me resulta bastante útil, de hecho escribí un pequeño batch que te premite matar procesos que se quedan colgados, solamente lo ejecutas y seleccionas el proceso que quieres matar. Es un recurso muy sencillo y muy útil, en especial si no saben utilizar la terminal. les paso el link del repositorio en GitHub: https://github.com/LucasAMoralesRomero/BatchCerrarProgramas
Desde hace algunos meses me gusta mucho gtop, este panel de control del sistema para terminal permite ver de una forma mucho más atractiva los procesos, la red, recursos, etc.
Si desean profuncizar con gtop, pueden visitar la fuente en DesdeLinux
A kill, hay que enviarle como parámetro la señal a enviar, en el caso de matar un proceso, sería kill -9 pid o killall proceso si tiene varios hilos de ejecución.
Con el parámetro &, mandas una tarea a segundo plano, con el comando jobs, listamos que tareas se ejecutan y con bg, relanzamos la tarea que tenemos ejecutandose en segundo plano.
Si suspendemos una tarea con Ctrl+z, la relanzamos con fg
ps //muestra los procesos de los comandos que estan corriendo en la terminal
[email protected]:~$ ps
PID TTY TIME CMD
665822 pts/3 00:00:00 bash
741098 pts/3 00:00:00 ps
kill [PID] //permite eliminar el proceso indicado
top //muestra los procesos que estan corriendo interactivamente, permite filtrar segun varios parametros
buen aporte de gerardo alberto soto alvarez del castillo
Nivel de poder de algunos (para mi) programas para gestionar procesos:
4to: ps (Dios griego: Hephaestus)
3ro: top (Dios griego: Apollo)
2do: htop (Dios griego: Poseidon)
1ro: glanses (Dios griego: Zeus) lo malo de este es que consume bastante CPU, pero se ve genial y te dice que problemas ocurren XD.
.
(jajaja, si tienen otro, comenten cual es y su clasificación va)
Tenía la pregunta de cómo el día de mañana en situaciones reales solucionar algo como “no me elimino el proceso”. me pregunté: ¿de dónde salió ese -9? le di kill --help y no lo vi. Estaba ejecutando mal manual, pensé que no tenía XD. pero es man kill y ahi si:
El manual nos explica que se usa el -9 como alternativa.
The main difference between synchronous and asynchronous processes is that synchronous processes happen in a specific order, while asynchronous processes can be executed in any order or even at the same time.
Ver los procesos activos en la terminal (ps)
El comando ps muestra los procesos que están activos en una tabla muy sencilla de entender, donde el la primera columna tenemos el process ID y en la última el nombre.
Un proceso en linux es una serie de instrucciones que vienen de un programa que esta en ejecución, existen diferentes elementos que incorpora un proceso como la prioridad de ejecución del proceso que le indica a Linux cuanto CPU utilizar y el tiempo máximo de ejecución del proceso.
Cuando Linux se ejecuta, el kernel de Linux tiene la primera prioridad de ejecución, conocida como PID 1 (Process ID). En versiones anteriores de Linux, este proceso era conocido como init que esta basado en en la forma en la que sistemas antiguos de Unix arrancaban el sistema.
Las versiones modernas de Linux utilizan systemd que intenta coordinar la manera en que los procesos son manejados. Como comentamos PID1 es el proceso padre, todos los demás procesos ejecutados a partir de este son procesos hijos.
Manejo de procesos
ps: nos muestra los procesos que están corriendo en la terminal actualmente, tiene un PID, process ID.
kill <PID>: para matar procesos, termina los procesos.
top: muestra los procesos que están usando más recursos. Teclear h para ver las opciones
Visualizar procesos en detalle y poder generar filtros
top
Matar procesos
kill PID
EJERCICIO PRACTICO
Podemos correr procesos de manera asíncrona, y intencionalmente dejar un proceso corriendo para comprobar
cat & ls
el comando cat, al no recibir un parámetro se queda corriendo. verificamos:
ps
verificamos, obtenemos y copiamos el PID del proceso que esta corriendo, una vez copiado, si lo queremos matar ejecutamos el comando kill con el PID del proceso copiado
Estos comandos están enfocados para trabajar con procesos. Parar procesos, asignarles diferente prioridad, etc. Veamos cuáles son.
Listar procesos con ps
-Este comando nos permite ver los procesos que hay actualmente en ejecución en el sistema. Es especialmente útil cuando queremos ver qué proceso está bloqueando un archivo o carpeta o incluso otro proceso. También nos sirve para ver si está arrancado un servicio, como por ejemplo, el de MySQL u Apache.
Este comando nos proporciona bastante información, pero quizá la más importe sea el PID o número de proceso. Con este número podremos por ejemplo, parar un proceso en caso de ser necesario.
Sleeping (S) : Procesos que están esperando su turno para ejecutarse.
Running ( R ) : Procesos que están en ejecución.
Waiting (D) : Procesos esperando a que se finalice alguna operación de Entrada/Salida.
Zombie (Z) : Procesos que han terminado pero que siguen apareciendo en la tabla de procesos. Se pueden deber a errores de programación y pueden ser el síntoma de un sistema lento o que provoca problemas.
Hay un comando llamado gtop, que nos muestra el estado del o los procesadores, ram, procesos, interfaces de redes y uso del disco de manera gráfica, muy util cuando solo quieres saber el estado general de los recursos de tu PC, pero para manejar procesos es más recomendable htop.
Si nos ha pasado que hemos tenido que ir al administrador de tareas a matar a un programa ya sea por que se trabo, no funciono, la manera de manerjarlo desde la terminal es diferente.
Como matarlos, como visualizarlos, manejarlos y filtrarlos.
PS
ps
Nos muestra los procesos que estan corriendo actualmente, todo proceso tiene un id este se le conoce como pid, esto es util cuando tenemos comandos asincronos.
cat & ls
Matar proceso Kill
kill#PID
TOP
Nos permite ver los procesos que consumen mas recursos
top
Para que me muestre la ayuda de todos los comandos que puedo utilizar H.
La terminal es mas efectiva que cualquier administrador de tareas.
HTOP
Esta es la evolucion de top, tiene mas opciones tanto para matar como para filtrar.
Recomendación: miren bien el código del proceso que van a matar. Tomé el código de gnome-shell (en ubuntu) en vez de gnome-terminal y pasé un buen susto.
PD: si les pasa, no se asusten, solo deben reiniciar el pc con el boton de power.
Por si acaso:
.
Usar Terminar proceso intenta cerrar el proceso adecuadamente, dándole tiempo para guardar archivos, etc, mientas que Matar fuerza a que se cierre de inmediato. En el caso de ciertos programas, esto significa que pierde los archivos que no haya guardado. Siempre debe intentar primero la opción Terminar proceso.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.