CURSO DESDE 0 DE GNU/LINUX. Versión 2.
Entrega 28. Monitorización y eliminación de procesos.
% rm God
rm: God nonexistent
Introducción.
Ya vimos en las entregas 8 y 9 el control de tareas, ahora aprenderemos más sobre cómo monitorizarlas, saber en qué estado se encuentran, cuáles consumen más y cómo eliminarlas.
Cuando ejecutamos una aplicación, lo que hace el sistema es arrancar un proceso que es el que va a usar cpu y los recursos como la memoria, y que en definitiva, compone la aplicación. Una aplicación puede ejecutar muchos procesos distintos, por lo que podríamos decir para simplificarlo que la aplicación es lo que nosotros vemos y los procesos lo que hace posible la aplicación.
Muchas veces la correspondencia es una aplicación = un proceso, pero no tiene por qué ser así, como por ejemplo grandes servidores como apache que pueden tener varios procesos prestando servicio. Empezaremos como siempre por la consola y terminaremos en las siguientes entregas con las distintas posibilidades gráficas para hacer lo mismo.
Echemos un vistazo.
Lo primero que necesitamos es una herramienta para ver qué procesos están corriendo en nuestro sistema, y para ello qué herramienta mejor que:
ps [opciones]
Este comando informa del estado de los procesos en nuestra máquina, que como casi siempre pasa con otros comandos, tiene más opciones que las que vemos y formas de usarlo, así que pasamos a usarlo sin opciones:
matados2k@fortaleza:~$ ps
PID TTY TIME CMD
9951 pts/4 00:00:00 bash
9955 pts/4 00:00:00 ps
matados2k@fortaleza:~$
Vemos que nos muestra información sólo de los procesos propios que se están controlados por algún terminal, y uno es bash, que no es más que el intérprete de comandos, y 'ps', que se ve a sí mismo y se muestra. Vemos también varias columnas, la más importante es PID, que nos muestra el identificador de proceso (este es único), TTY indica en qué terminal se está ejecutando, pts indica que es una consola virtual y el número (tengo unas 5 abiertas ahora mismo), TIME es el tiempo que están consumiendo, y CMD indica a qué ejecutable pertenece y cómo fue invocado.
Pero esto sabe a poco y quiero saber los procesos de los otros usuarios, no solo los míos, y para eso necesito la opción 'a':
matados2k@fortaleza:~$ ps a
PID TTY STAT TIME COMMAND
8014 tty1 Ss+ 0:00 /sbin/getty 38400 tty1
8015 tty2 Ss+ 0:00 /sbin/getty 38400 tty2
8016 tty3 Ss+ 0:00 /sbin/getty 38400 tty3
8017 tty4 Ss+ 0:00 /sbin/getty 38400 tty4
8018 tty5 Ss+ 0:00 /sbin/getty 38400 tty5
8019 tty6 Ss+ 0:00 /sbin/getty 38400 tty6
8713 pts/2 Ss+ 0:00 /usr/bin/kdesu_stub -
9826 pts/3 Ss 0:00 /bin/bash
9830 pts/3 S+ 0:00 man ps
9837 pts/3 S+ 0:00 sh -c /usr/bin/zsoelim /tmp/zmantCBzr4 | /usr/bin/tbl
9842 pts/3 S+ 0:00 /usr/bin/pager -s
10187 pts/5 Ss 0:00 /bin/bash
10442 pts/5 R+ 0:00 ps a
matados2k@fortaleza:~$
Ya ahora en TTY nos aparece tty, que no es más que los terminales que no están bajo X que tenemos en nuestro ordenador, y STAT nos indica en qué estado se encuentra el proceso, pudiendo ser los siguientes:
R para preparado para ejecución (runnable)
S para durmiendo (sleeping)
D para indicar letargo ininterrumpible (uninterruptible sleep)
T para parado o trazado (traced)
Z para un proceso zombie.