LPIC

Guía extraoficial de estudio

Archivos en la Categoría: 5 : Procesos de creación, monitoreo y eliminación

Procesos en primer y segundo plano

Normalmente, cuando se inicia un programa, este toma el control del terminal, impidiendo realizar otras tareas. Para solucionar dicho problema, existe la posibilidad de poder pasar los procesos de primer plano a segundo plano.

Ejemplo:

[super@localhost ~]$ vi la hola.txt

vi

Se nos abre el vim en el terminal y no podemos hacer otra cosa que no sea editar hola.txtPulsamos control-z para pausar el proceso y regresar al terminal. 

Este proceso suspende el programa, por lo que la tarea que este realizando, también la detiene. En este caso no tiene importancia porque estamos editando un documento, pero podría tenerla según el proceso pausado.

El terminal nos muestra el siguiente mensaje:

[1]+  Detenido                vimhola.txt

Ejecutamos la siguiente orden para ver el proceso y su estado:

[super@localhost ~]$ psaux | grepvim

super     2649  0.0  0.0 155000  3540 pts/0    T    17:09   0:00 vimhola.txt

Ahora si queremos volver al editor, debemos usar el comando fg (foreground)Si tuviéramos más de un proceso detenido, deberemos utilizar este comando con un número (fg 2, fg 3, ….). Para saber que numero va asociado a cada proceso detenido, tenemos el comando jobs

[super@localhost ~]$ jobs

[1]-  Detenido                vimhola.txt

[2]+  Detenido                vimadios.txt

La forma de pasar un proceso a segundo plano, para que así el proceso vuelva a estado de ejecución, es mediante el comandobg (background):

[super@localhost~]$ bg 2

No obstante, la manera más cómoda de ejecutar un programa en segundo plano, sin tener que pararlo con control-zy luego usar la orden bg, es con el &. Podemos ejecutar un un programa en segundo plano de la siguiente forma:

[super@localhost ~]$ vi ola &

[3] 2772

Technorati Tags

Anuncios

Comando top

El administrador de tareas de Linux

Este comando es una variante dinámica de ps. Es utilizado cuando queremos saber cuanto tiempo de CPU consumen los procesos, y poder comparar unos con otros. Como vemos en la siguiente imagen, ordena las entradas por el uso de la CPU y actualiza los datos cada pocos segundos, por lo que la convierte en una buena herramienta para localizar procesos descontrolados.

top

 

 

Opciones de top:

Opción Resultado
-d retardo Especificamos el tiempo que tardan en refrescarse los datos.
-p pid Se usa para monitorizar determinados procesos. Las PID las podemos obtener mediante el comando ps . Admite hasta 20 PID.
-n iter Para que top muestre un determinado numero de actualizaciones.
-b Suele contener la fecha y hora de la compilación del kernel

Además, mientras está en ejecución, top admite una serie de comandos:

Opción Resultado
h o ? Nos muestra la información de ayuda.
k Después de introducir el PID, intentará destruir el proceso.
q Sale de top.
r Permite cambiar la prioridad de un proceso, que por defecto es 0. Nos pedirá un número PID y y un nuevo valor para la prioridad (positivo lo reduce y negativo lo aumenta). Solo root puede incrementar la prioridad.
s Nos pie la velocidad en segundos, y es el tiempo que tardan en actualizarse los datos.
P Los datos mostrados se ordenan por el uso de la CPU, que es la configuración por defecto.
M Los datos se ordenan por el uso de la memoria.

_

Un dato importante que proporciona top es la carga media (load average), parámetro que indica la demanda de tiempo de la CPU que utilizan los procesos. En la captura de top, más arriba, puedes ver tres cargas medias: 0.29, 0.57 y 0.36, que corresponden a la carga media actual y a las dos anteriores. Un sistema donde los programas no demandan tiempo de CPU la carga media es de 0, mientras que uno que si demanda, es de 1. Si un sistema suele tener una carga media de 0.5, por ejemplo, pero de repente se sitúa en 2,5, puede que haya procesos colgados que estén acaparando la CPU. Un comando útil para ver la carga media del PC, así como el tiempo que lleva encendido, es uptime.

Comando ps

Las opciones de ps

Este programa muestra el estado de los procesos. Admite muchas opciones útiles y sirve para monitorizar procesos. Para el que venga de windows, podríamos decir que es como el “Administrador de tareas” que aparece al presionar ctrl+alt+supr. Su sintaxis es muy sencilla:

ps [opciones]

Si no añadimos opciones, ps muestra los procesos del usuario con el que estamos logueado. No es necesario colocar espacios entre las opciones, ya que se pueden agrupar, por ejemplo, en lugar de poner ps -a -f, podríamos poner ps -af.

Como siempre, para conecer todas las opciones y posibilidades del programa deberemos consultar el manual (man ps). Además, se nos muestran varios ejemplos que podrian sernos de utilidad:

To print a process tree:
ps -ejH
ps axjf
To get info about threads:
ps -eLf
ps axms
To get security info:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

Entre algunas de las características mas útiles tenemos:

Opción Resultado
–help Muestra la ayuda.
-A o -e Hacen que se muestren todos los procesos del sistema. Si le adjuntamos la opcion x, muestra todos los procesos que pertenecen al usuario que ejecuta el comando, además de incrementar la cantidad de información que se muestra de cada proceso.
-u usuario muestran los procesos que pertenecen al usuario en concreto.
-H , -f y –forest Muestra la jerarquía de procesos, útiles si intentamos averiguar los parentescos de los procesos.
-w Esta opción es utilizada para mostrar una salida mas ancha, ya que ps trunca su salida para que se adapte a su pantalla.. Con ps w>ps.txt, redirigimos la salida a un fichero, y lo abrimos que un editor de texto que admita lineas mas anchas.
-f, -l, j, l, u y v Se utilizan para ampliar la información proporcionada en la salida ps.

Podemos combinar estas opciones de muchas maneras para obtener los resultados deseados. Una de las combinaciones mas útililes para el “dia a dia” podria ser:

ps -aux

que nos muestra los procesos de todos los usuarios con infomación añadida:

 

Interpretar la salida de ps

Es importante saber interpretar los campos mostrados por la anterior imagen. Como podemos observar, la salida de ps comienza por un encabezado. Describamos esos campos:

Campo Descripción
USER Nombre de usuario que ejecuta el programa.
PID Número encargado de identificar el proceso. Es importante ya que lo necesitamos para modificar o destruir el proceso.
%CPU Porcentaje total de tiempo de CPU que utiliza el proceso cuando se utiliza ps.
%MEM Porcentaje de memoria utilizada por el proceso.
VSZ Tamaño total del proceso en la memoria virtual, en kilobytes.
RSS Cantidad de memoria utilizada por el proceso.
TTY Código que se utiliza para identifica el terminal. No todos los procesos tienen TTY.
STAT Muestra información acerca del estado del proceso (ver estado de un proceso Unix).
START Indica la hora de ejecución.
TIME Cantidad total de tiempo de CPU consumido.
COMAND Comando utilizado para iniciar el proceso.

 

Estado de un proceso Unix

  • Preparado (R).- Runnable. Está preparado para la ejecución.
  • Zombie (Z).- Todo proceso al finalizar avisa a su proceso padre, para que éste elimine su entrada de la tabla de procesos. En el caso de que el padre, por algún motivo, no reciba esta comunicación no lo elimina de la tabla de procesos. En este caso, el proceso hijo queda en estado zombie, no está consumiendo CPU, pero sí continua consumiendo recursos del sistema.
  • Ejecutando (O).- Sólo uno de los procesos preparados se está ejecutando (para sistemas monoprocesador).
  • Parado (T).- (traced) Un proceso parado. Pasará a estar preparado en cuanto vuelva a recibir la señal.
  • Suspendido (S).- Un proceso se encuentra suspendido si no entra en el reparto de CPU, ya que se encuentra esperando algún tipo de evento (por ejemplo, la recepción de una señal software o hardware). En cuanto dicho evento se produce, el proceso pasa a formar parte del conjunto de procesos preparados.

Comando uname: conocer el kernel

Podemos definir el concepto “kernel” como el corazón de nuestro sistema operativo Linux. Entre las funciones más importantes se encuentran:

  • Administración de la memoria para todos los programas y procesos en ejecución.
  • Administración del tiempo que se tarda en procesador los programas.
  • Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda.

Aunque no podemos administrar este proceso en la misma medida que el resto, con uname si podemos obtener información sobre éste. Como siempre, veremos algunas de sus opciones y después ejemplos.

Opción Resultado
-n –nodename Nos muestra el nombre del equipo en la red
-s –kernel-name Devuelve el nombre del kernel, suele ser Linux
-v –kernel-version Suele contener la fecha y hora de la compilación del kernel
-r –kernel-release Número de la versión del kernel
-m –machine Devuelve información sobre la máquina (arquitectura)
-p –processor En teoría retorna información sobre la CPU (fabricante, modelo, etc), pero en la práctica suele devolver unknown, o como en mi caso lo mismo que la opción –m (x86_84)
-o –opertating-system Nombre del sistema operativo
a –all muestra toda la información disponible

Ejemplo:

[super@localhost ~]$ uname -a
Linux localhost.localdomain 3.3.1-3.fc16.x86_64 #1 SMP Wed Apr 4 18:08:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

podemos combinar los parámetros que queramos con tal de adquirir la información deseada:

[super@localhost ~]$ uname -pro
3.3.1-3.fc16.x86_64 x86_64 GNU/Linux

En la práctica, dicho comando es utilizado en scripts multiplataforma que utilicen estas opciones para adquirir información y así ajustar sus acciones al sistema en que se ejecuta.