2. Manipulación de procesos

Desde el punto de vista del sistema, las aplicaciones corren en uno o varios procesos, consumiendo recursos del sistema, tales como tiempo del procesador y memoria. Presentamos algunos comandos para supervisar y administrar esos procesos y, consecuentemente, las aplicaciones a los que pertenecen.

2.1. Información sobre los procesos

El comando ps muestra una lista de procesos que corren actualmente en el sistema de acuerdo con los criterios que Usted establezca.

Al correr ps sin argumentos, éste mostrará sólo los procesos iniciados por Usted y ligados a la terminal que está utilizando:

$ ps
      PID TTY          TIME CMD
    18614 pts/3    00:00:00 bash
    20173 pts/3    00:00:00 ps

Las opciones más comunes son:

  • a: muestra los procesos iniciados por todos los usuarios;

  • x: muestra los procesos lanzados desde cualquier terminal, no sólo la suya (o aún desde ninguna);

  • u: muestra para cada proceso, el nombre del usuario que lo inició y el momento de inicio.

2.2. Control de procesos

Los procesos se controlan por medio de señales. Los comandos kill y killall se utilizan para enviar señales a los procesos. El comando kill necesita un número de proceso como argumento, mientras que killall necesita un nombre de proceso.

[Nota] Nota

Por favor tenga en cuenta que los procesos reaccionan de forma diferente ante las mismas señales. No espere a priori que el proceso se comporte como Usted cree que lo hará cuando le envíe una señal.

kill [-SEÑAL] <numero_de_proceso>
killall [-SEÑAL] <nombre_de_proceso>

Las señales se pueden especificar por nombre o por número. Ejecute kill -l para visualizar una lista de las señales disponibles. Las señales más utilizadas son:

  • TERM o 15: es la señal predeterminada que se envía si se omite el nombre o número de la señal. Finaliza el proceso elegantemente.

  • STOP o 19: esta señal se utiliza para suspender un proceso por unos instantes. Envíe la señal CONT o 18 para continuar un proceso suspendido.

  • KILL o 9: esta señal se utiliza para forzar la finalización del proceso. Generalmente se la utiliza para finalizar un proceso que no responde (o que está “congelado”). Finaliza el proceso en forma abrupta.

Algunos ejemplos:

  • kill 785: solicita al proceso identificado por el número 785 finalizar la ejecución dándole la oportunidad de llevar a cabo cualquier operación de limpieza que necesite;

  • kill -KILL 785: fuerza la finalización del proceso identificado por el número 785 sin darle al proceso la oportunidad de llevar a cabo cualquier operación de limpieza. El proceso termina de inmediato;

  • killall -TERM make: solicita a todos los procesos denominados make lanzados por ese usuario, que finalicen la ejecución.

Pase lo que pase, solamente podrá controlar sus propios procesos (a menos que esté conectado como root), por lo cual no necesita preocuparse sobre los procesos de los otros usuarios ya que los mismos no se verán afectados.

2.3. Combinación de ps y kill: top

top es un programa que realiza simultáneamente las funciones de ps y kill, y también se utiliza para supervisar los procesos en tiempo real brindando información sobre el uso de CPU y utilización de memoria, tiempo de ejecución, etc., como se muestra en Figura 17.1, “Supervisión de procesos con top”.

Figura 17.1. Supervisión de procesos con top

Supervisión de procesos con top

El utilitario top se controla por completo con el teclado. Los comandos son sensibles a mayúsculas y minúsculas. Puede obtener ayuda si presiona h. Los comandos más útiles son los siguientes:

  • k: envía una señal a un proceso. Se le solicitará el PID del proceso seguido del número o nombre de la señal a ser enviada (TERM o 15, de forma predeterminada);

  • M: ordena los procesos por la cantidad de memoria que ocupan (campo %MEM);

  • P: ordena los procesos por el tiempo de CPU que ocupan (campo %CPU): este es el método de ordenamiento predeterminado;

  • u: muestra los procesos de un usuario dado. Se le pide que introduzca el nombre del usuario, no su UID. Si no ingresa un nombre, se mostrarán todos los procesos;

  • i: todos los procesos, incluso los “dormidos”, se muestran de forma predeterminada. Este comando asegura que sólo se muestran los procesos que corren actualmente (procesos cuyos campo STAT muestra R, Running) y no los otros. Al utilizar este comando nuevamente se vuelven a mostrar todos los procesos.