PROCESOS

¿A qué se le llama "proceso" en Linux? Un proceso es sencillamente una instancia de un programa que se está ejecutando. Al igual que otros sistemas operativos, Linux es multitarea: esto quiere decir que puede ejecutar varios procesos simultáneamente. Y más aún, al tener un enfoque multiusuario, distintos usuarios podrían estar ejecutando varias instancias de una misma aplicación. Debido a esto, Linux resulta ser muy práctico para que un superusuario pueda decidir y administrar qué procesos se pueden ejecutar y cuáles no. Cada proceso cuenta con un identificador único llamado PID (process ID), el cual podemos consultar con ps (process). Este comando es muy útil porque muestra una lista de los procesos que se están ejecutando con su respectivo PID.

ps

Suele utilizarse con las opciones aux y muestra una instantánea estática de los procesos que se están ejecutando. Resulta práctico para generar scripts, filtrando procesos u obteniendo el PID de alguno en particular. Por ejemplo:

ps aux | grep "bash"

aux en realidad son 3 opciones distintas y se pueden escribir incluso sin el guion (el comando las reconoce igualmente):

Comando Descripción
pgrep proceso
pidof proceso
Obtiene el PID de un proceso por su nombre
kill pid Cierra un proceso según su PID
pkill -f proceso Cierra un proceso según su nombre
killall proceso Cierra todos los procesos con el mismo nombre
proceso & Ejecuta un proceso en segundo plano
jobs Muestra los procesos en segundo plano

Ejercicios

  1. Abrir el Editor de Texto en segundo plano desde la terminal con xed.
  2. Verificar que el proceso se está ejecutando en segundo plano con el comando jobs.
  3. Obtener el PID del proceso con el comando.
  4. Finalizar el proceso con el comando kill y verificar que efectivamente se cerró.

top

El comando top permite monitorear lo que está ocurriendo en el sistema en tiempo real (por defecto se actualiza cada 3 segundos). La interfaz consta de varias líneas y una tabla:

  1. La primera línea muestra estadísticas tales como la hora actual, el tiempo que lleva encendido el equipo (up), la cantidad de usuarios activos y el promedio de carga del último minuto, de los últimos 5 minutos y de los últimos 15 minutos.
  2. La segunda muestra la cantidad total de procesos, los que están en ejecución, los que están suspendidos (mayormente esperando a que ocurra algún evento), los que están detenidos y los que están en modo "zombie" (un proceso que ya ha finalizado pero que permanece debido al que lo inició).
  3. La tercera muestra detalles del uso del CPU: cuál es el porcentaje que utilizan los usuarios (us) y cuál es el del sistema (sy), entre otros.
  4. La cuarta y quinta línea muestran el uso de memoria RAM y virtual (swap) respectivamente.

En esta tabla, las columnas más importantes son:

Durante la ejecución de top, puedes presionar ciertas teclas para interactuar con el programa:

Tecla Descripción
P (mayúscula) Ordenar por uso de CPU (descendiente)
M (mayúscula) Ordenar por uso de memoria (descendente)
N (mayúscula) Ordenar por número de PID
k (minúscula) + PID Matar un proceso
r (minúscula) + PID Cambiar la prioridad de un proceso (nice)
d (minúscula) + num Cambiar el intervalo de actualización
q (minúscula) Sale de top

Además, el comando top tiene varias opciones muy útiles:

Comando Descripción
top -u usuario (-user) Muestra la actividad de un usuario en particular
top -d num (-duration) Define el intervalo de actualización
top -n num (-number) Se ejecuta una cierta cantidad de veces y luego finaliza
top -p pid1 pid2... (-PID) Monitorea solamente los procesos indicados
top -c num Muestra la línea de comando completa de cada proceso

Ejercicios

  1. Abrir el Editor de Texto en segundo plano desde la terminal con xed.
  2. Abrir una nueva consola con Ctrl+Alt+T y ejecutar top. Confirmar que el programa se está ejecutando. Si no aparece en el listado, escribir algo en el programa.
  3. Salir de top y ejecutar el comando ps aux | grep xed.
  4. Repetir el comando anterior y agregarle > proceso-xed.txt para guardar la información en un archivo de texto.
  5. Ahora que se conoce el PID, finalizar el proceso con el comando kill. Verificar que el programa efectivamente se cierra.