jueves, septiembre 22, 2005

Control de Taréas y Procesos


Muchos comandos Linux toman su entrada de algo conocido como entrada estándar y envían su salida a la salida estándar
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como proceso, que es simplemente el nombre que se le da a un programa cuando se esta ejecutando.El comando ps visualiza la lista de procesos que se están ejecutando actualmente, por ejemplo:

[Crispin@Globus /Crispin]§ ps
PID TTY TIME CMD
45 pts/0 00:00:00 bash
84 pts/0 00:00:00 ps
La columna PID representa el identificador de proceso. La ultima columna CMD, es el nombre del proceso que se esta ejecutando. Un proceso que esta corriendo se denomina tarea para el shell. Los términos proceso y tarea, son intercambiables. Sin embargo, se suele denominar «tarea» a un proceso, cuando es usado en conjunción con control de tareas, que es un rasgo del shell que permite cambiar entre distintas tareas.
En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el ultimo comando que ellos teclearon desde el shell. Sin embargo, usando el control de tareas, usted podrá ejecutar diferentes tareas al mismo tiempo, cambiando entre cada uno de ellos conforme lo necesite.

Primer Plano y Segundo Plano

Un proceso puede estar en Primer plano o en Segundo plano. Solo puede haber un proceso en primer plano al mismo tiempo, el proceso que esta en primer plano, es el que interactúa con usted recibe entradas de teclado, y envía las salidas al monitor. (Salvo, por supuesto, que haya re-dirigido la entrada o la salida). El proceso en segundo plano, no recibe ninguna señal desde el teclado por lo general, se ejecutan en silencio sin necesidad de interacción. Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se esta ejecutando actualmente, sino que esta temporalmente parado. Después de suspender una tarea, puede indicar a la misma que continúe, en primer plano o en segundo, según necesite. Retomar una tarea suspendida no cambia en nada el estado de la misma la tarea continuara ejecutándose justo donde se dejo.

Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando usted interrumpe un proceso (generalmente con la pulsación de ), el proceso muere, y deja de estar en memoria y utilizar recursos del ordenador. Una vez eliminado, el proceso no puede continuar ejecutándose, y deberá ser lanzado otra vez para volver a realizar sus tareas. También se puede dar el caso de que algunos programas capturan la interrupción, de modo que pulsando no se para inmediatamente. Esto se hace para permitir al programa realizar operaciones necesarias de limpieza antes de terminar. De hecho, algunos programas simplemente no se dejan matar por ninguna interrupción.

Envío a Segundo Plano y eleiminación de procesos
Una forma de mandar procesos a segundo plano es añadiendo un carácter & al final de cada comando.

martes, septiembre 20, 2005

SHELL DE UNIX

EL SHELL COMO INTERPRETE DE COMANDOS

Cuando un usuario comienza una sesión de Unix se dice que ya entra en un shell o dialecto que interpreta los comandos según su propia sintaxis. Despues de que el shell interpreta el comando, el UNIX lo llama y ejecuta. Una vez que un programa ha sido llamado y ejecutado se dice que el proceso ha concluido. A cada proceso se le adjudica un número concreto que se le denomina PID.

EL SHELL Y LOS TIPOS DE SHELL

UNIX ofrece tres tipos de shell o modos de interpretación de comandos: Bourne Shell(sh); Korn Shell(ksh); C Shell(csh).
El Bourne shell es el más antiguo y tuvo gran popularidad en su lanzamiento, es el shell por defecto del UNIX.
El C shell reensambla la programación en lenguaje C y por tanto es más completo que el anterior.
El Korn Shell es el más moderno de los tres y el más desconocido

USUARIO <==> INTERPRETACION DE COMANDOS <==> MODULO DEL SO KERNEL <==> HARDWARE

Hay varios tipos de intérprete de órdenes shell, escudo en inglés en el mundo de Unix. Los más importantes son la ``shell Bourne'' y la ``shell C''. La shell Bourne utiliza una sintaxis de órdenes como la shell original de los primeros sistemas UNIX, como System III. El nombre de la shell Bourne en la mayoría de los sistemas es /bin/sh (donde sh significa ``shell''. La shell C (no confundir con una concha marina) utiliza diferente sintaxis, parecida al lenguaje de programación ``C'', y en la mayoría de los sistemas se llama /bin/csh.

Bajo , hay disponibles muchas variaciones de intérpretes de órdenes. Las dos más comúnmente utilizadas son Bourne Again Shell, o ``bash'' (/bin/bash), y ``Tcsh'' (/bin/tcsh). La variante bash es una forma de shell Bourne que incluye muchas de las características avanzadas de la shell C. A causa de que bash soporta un superconjunto de sintaxis de la shell Bourne, los guiones de la shell escritos en el estándar de la shell Bourne podrían trabajar con bash. Si se prefiere la sintaxis de la shell C, soporta tcsh, que es una versión ampliada de la shell C.

El tipo de shell que usted decida utilizar será sobre todo una cuestión de fe. Algunas personas prefieren la sintaxis de la shell Bourne con las características avanzadas de bash, y otros prefieren la sintaxis más estructurada de la shell C. Por lo que respecta a órdenes normales como cp y ls, la shell que se use no importa, la sintaxis es la misma. Sólo cuando se comienzan a escribir guiones de órdenes o a usar las características avanzadas de la shell, comienzan a importar las diferencias entre los tipos de shell. Al discutir las características de varios intérpretes, se notarán las diferencias entre las shells C y Bourne.

Sin embargo, para los propósitos de este manual, la mayoría de estas diferencias son mínimas (si realmente estás interesado en este punto, lea las páginas sobre bash y tcsh).También puede leer el ``Bash Scripting HOWTO''