Logueate





Inteligencia Compartida

Linux, ubuntu, gnome, debian, xubuntu, GNU

La Zona Linux, la zona linux, Todo lo relacionado al mundo de GNU / Linux, ubuntu, debian, etc

Posteado por:

what'God?
DrLemon
Linuxero
* Masculino

144 Posts
495 Comentarios
3065 Puntos
0 Referido/s

REGISTRATE! es GRATIS!!

 Curso Gnu/Linux de Webtech Arg.(5de8)  

CURSO GNU / LINUX - (5° de 8)

Administración de Procesos


Como dijimos antes, el LINUX está diseñado para trabajar con procesos interactivos. Para ello implementa un esquema de round robin para la administración de la CPU, por el cual cada proceso va recibiendo una pequeña porción de tiempo de CPU para su trabajo, según el número de prioridad que cada proceso tenga asociado. En este esquema, los números menores corresponden a las prioridades más altas. Los procesos del sistema tienen asignados números negativos, de modo tal de tener prioridades siempre superiores a los procesos de usuario.

Se cuenta además con una técnica de envejecimiento, por el cual la prioridad de un proceso es aumentada a medida que transcurre tiempo dentro del sistema, y además, un proceso puede tener que liberar la CPU por la aparición de eventos de más importancia o porque él mismo requiera algún evento. En este último caso, queda dormido hasta que se produce dicho evento.

Para la administración de los procesos, entendiendo a éstos como un programa más su entorno, el LINUX les asigna a cada uno un número entero, el identificador del proceso. Además, cada proceso tiene asociado varios bloques de control, almacenados en el núcleo y utilizados para planificar el uso de la CPU y administrar los procesos.

Una estructura de proceso contiene estos datos básicos para un proceso: su identificador, prioridad, punteros a otros bloques de control. Hay una tabla de estructuras de procesos, con indicador del estado en que está cada proceso: así, una cola de procesos listos para ejecución, una de procesos en espera de Entrada/Salida, etc.
Los procesos se comunican entre sí mediante pipes, a los cuales se puede acceder por medio de un descriptor de archivo, ya que el LINUX los trata como archivos, salvo que permite que se los lea sólo una vez, tras lo cual los destruye.

Además, todo proceso mantiene una tabla con sus archivos abiertos; en esta tabla se crean 3 entradas automáticamente al crearse el proceso. Ellas son:
0  standard input    Por defecto, el teclado
1  standard output   Por defecto, la pantalla
2  standard error    Por defecto, la pantalla

Todas estas pueden ser redireccionadas mediante los siguientes símbolos:

<
Redirecciona la entrada estándar

 Sintaxis
comando < arch

Descripción
Redirecciona la entrada estándar. De ese modo, el comando recibe la
entrada desde el archivo arch en lugar del teclado.

 Ejemplo
copy < micopia
Copia directorios según lo especificado en el archivo micopia.

>
Redirecciona la salida estándar

 Sintaxis
comando> arch

Descripción
Redirecciona la salida estándar. De ese modo, la salida producida por la
ejecución de comando se guarda en el archivo arch en lugar de mostrarla
por pantalla.

 Ejemplo
cat carta1> micarta
Lista el archivo carta1 en el archivo micarta.

2>
Redirecciona la salida de errores estándar

 Sintaxis
comando 2> arch

 Descripción
Redirecciona la salida de errores estándar. De ese modo, los errores
producidos por la ejecución de comando se guardan en el archivo arch en
lugar de mostrarlos por pantalla.

 Ejemplo
head -20 carta1 2> micarta
Lista las 20 primeras líneas del archivo carta1; si hay errores, los lista en el
archivo micarta.
Modo de ejecución de los procesos

Hay dos formas básicas de ejecutar procesos en LINUX:

foreground  el usuario debe esperar que termine el trabajo antes de podercontinuar
background  el usuario envía el comando y puede seguir trabajando

La forma de ejecutar un comando en modo background es:
comando &

Cuando el usuario invoca un comando con este modo, el sistema le devuelve el control (el prompt) tras mostrarle el identificador del usuario.

Además, los comandos se pueden ejecutar secuencial o concurrentemente:

Ejecución secuencial:
comando1;comando2


Ejecución concurrente:
|  -pipe-
La salida del primer comando se toma como la entrada del segundo

 Sintaxis
comando1 | comando2

Descripción
Produce que la salida estándar del comando1 sea la entrada estándar del
comando2, ejecutándose concurrentemente. En la medida que el proceso
del comando1 va generando datos, éstos son puestos a disposición del
proceso del comando2.

 Ejemplo
ls -l | more
Lista el directorio -en formato largo- con corte por pantalla.
 

tee
Transcribe la entrada estándar a la salida estándar

 Sintaxis
tee [-i] [-a] [-u] [arch]

 Descripción
Transcribe la entrada estándar a la salida estándar y lo copia en arch.
Las opciones pueden ser:
  -i   Ignora las interrupciones
 -a   Provoca que la salida sea agregada al archivo antes que crearlo
 -u   Para que la salida no sea guardada en bufffers (escritura directa)

 Ejemplo
grep abc | tee abc.grep | sort | tee abc.sort | more
El comando grep muestra todas las líneas de abc; su salida es tomada
como entrada para el sort, tras lo cual es enviado a la salida estándar con
corte por pantalla. Para una mejor comprensión, ver los modos de
ejecución de los procesos más adelante.

Comandos para Procesos

ps
Reporta estado de procesos

 Sintaxis
ps [opciones]

 Descripción
Reporta el estado de los procesos activos, con información tal como el
identificador de procesos, el tiempo acumulado de ejecución y el nombre
del comando. Más información se puede obtener con las opciones.

Las principales opciones pueden ser:
  -e   Muestra la información sobre cada proceso activo.
  -d   Muestra información de todos los procesos excepto de los líderes de grupo.
  -a   Muestra la información de todos los procesos más usuales.
  -f    Muestra información completa de los procesos

 Ejemplo
ps -e

PID     TTY        TIME       COMMAND
 0           ?          0:00        swapper
 1           ?          0:01        init
 17      02          0:20        sh
. . .
 
kill
Finaliza un proceso

 Sintaxis
kill [-signo] id_proceso

Descripción
Envía la señal de terminar (15) al proceso cuyo identificador se indica, el
cual, si no la atrapa o ignora es abortado. Este comando lo puede ejecutar
sólo el mismo usuario del proceso o el super-usuario.
Si se envía un kill -9 el proceso es abortado sin alternativa.
El 0 como identificador de proceso mata todos los procesos del usuario, y
en combinación con -9 aborta también al shell, por lo que el usuario es
sacado del sistema.

 Ejemplo
kill -9 17
Aborta el proceso 17
 
at - batch
Ejecuta comandos en tiempo diferido

 Sintaxis
at hora [fecha] [incremento]
at -r id_job ...
at -l [id_job ...]
at -qletra hora [fecha] [incremento]
batch


Descripción
Ambos comandos envían a ejecutar comandos en tiempo diferido.
Difieren en cuanto al despacho de las tareas: un comando enviado con at
se ejecuta en el momento indicado, mientras que un comando enviado con
batch se ejecuta cuando la carga del sistema lo permite.

Las argumentos que recibe at son:
  hora   Puede ser 1, 2 ó 4 dígitos. Si son hasta 2 dígitos, indica sólo la
         hora. Si son 4, indica hora y minutos; puede ser de la forma
         hh:mm, y seguido por am o pm. Se aceptan también como
         valores posibles las palabras claves noon, midnight y now.
  fecha   El formato genérico es [aa,] nombre-mes dd o bien
         nombre-día (completo o las 3 primeras letras).
         Se aceptan también como valores posibles las palabras claves
        today y tomorrow. Por defecto, se asume today, salvo que la
         hora indicada ya haya pasado, en cuyo caso se asume
         tomorrow. Siempre asume hacia el futuro.
 
  incremento Es un modificador para la hora y fecha (si está) de la forma
         +n unidades, donde unidad puede ser minutes, hours, days,
         weeks, months
o years. Son equivalentes las formas +1
         unidad y next unidad.

  -r id_job Remueve un proceso enviado por at o batch. El identificador
         usar es el asignado al ser enviado.
  -l [id_job] Lista la hora de despacho del proceso enviado por at o batch
        cuyo identificador se indica. Si no se pone ninguno, lista la de
         todos los jobs de ese usuario.
  -qletra  Ubica la tarea en la cola denominada letra ("a"-"z")

 Ejemplo
at 8:15am Set 18 < mijob
Envía el archivo con comandos mijob para ejecución a las 8:15 del 18-Set.
at now + 30 day < mijob
Envía el archivo con comandos mijob para ejecución dentro de 30 días.
 
crontab
Ejecuta comandos en intervalos regulares

 Sintaxis
crontab [arch]
crontab -r
crontab -l
crontab -u usuario -r
crontab -u usuario -l


 Descripción
Envía a ejecutar tareas indicadas en un archivo en intervalos regulares.
Cada usuario puede tener hasta 1 archivo de tareas en cola.
Las argumentos son:
  -r   Elimina la tarea de la cola para ese usuario
  -l    Lista los contenidos de la cola para ese usuario.
  -u   Para indicar usuarios sobre los cuales trabaja el comando.

 Ejemplo
0        4    *    *    *   calendar -
1,15,30   4    *    *    *   (echo -n '';date; echo) > /dev/console
Este archivo, cada día a las 4:00 hs. corre el programa calendario y, a
partir de ese momento, al minuto, a los 15 y a las 30 minutos muestra en la
consola la fecha.
 
FIN DE LA QUINTA PARTE (5 de 8)

0 Comentarios
Este post no tiene comentarios.