www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
B1G2T01 - SISTEMAS OPERATIVOS DE LA FAMILIA UNIX.
1.
EVOLUCIÓN HISTORICA.............................................................................................................................................. 2
2.
CARACTERÍSTICAS ....................................................................................................................................................... 3
3.
TIPOS DE SHELL. ............................................................................................................................................................ 4 3.1. INTRODUCCIÓN........................................................................................................................................................ 4 3.2. SHELL DEL SYSTEM V: (SH) .................................................................................................................................... 4 3.2.1. ORDENES DE ENTRADA.................................................................................................................................... 5 3.2.2. UTILIZACIÓN DE COMODINES PARA ESPECIFICAR ARCHIVOS................................................................ 6 3.2.3. ENTRADA Y SALIDA ESTÁNDAR....................................................................................................................... 6 3.2.3. VARIABLES DEL SHELL..................................................................................................................................... 7 3.3. EL C-SHELL (CSH)....................................................................................................................................................... 9 3.4. EL SHELL KORN (KSH) ........................................................................................................................................... 10
4.
ESTRUCTURA DE ARCHIVOS.................................................................................................................................... 11 4.1. CARACTERÍSTICAS SISTEMA DE ARCHIVOS................................................................................................... 12 4.2. ALMACENAR DATOS............................................................................................................................................. 13 4.3. NOMBRES DE ARCHIVO........................................................................................................................................ 13 4.4. TIPOS DE ARCHIVOS.............................................................................................................................................. 14 4.5. ESTRUCTURA INTERNA DEL SISTEMA DE ARCHIVOS .................................................................................. 16 4.5.1. EL BLOQUE DE ARRANQUE........................................................................................................................... 17 4.5.2. EL SÚPER BLOQUE.......................................................................................................................................... 17 4.5.3. LA LISTA DE NODOS INDICE ......................................................................................................................... 17 4.5.4. BLOQUES DE DATOS....................................................................................................................................... 19 4.5.5. CREACIÓN DE UN SISTEMA DE ARCHIVOS................................................................................................. 20 4.6. ESTRUCTURA EXTERNA DEL SISTEMA DE ARCHIVOS ................................................................................. 20 4.6.1. DIRECTORIOS Y ARCHIVOS ESTÁNDAR ....................................................................................................... 21 4.7. OPERACIONES CON ARCHIVOS Y DIRECTORIOS................................................................................................. 23
5. INTERFACES GRAFICAS. ............................................................................................................................................... 25 5.1.
GESTOR DE VENTANAS........................................................................................................................................ 26
6.
IMPLEMENTACIONES COMERCIALES Y SOFTWARE LIBRE ......................................................................... 26
7.
CONCLUSIÓN ................................................................................................................................................................. 28
8.
BIBLIOGRAFÍA .............................................................................................................................................................. 28
9.
ESQUEMA – RESUMEN ................................................................................................................................................ 29
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 1 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
1.
EVOLUCIÓN HISTORICA
A finales de los años sesenta, sobre 1968, un conjunto de investigadores provenientes de AT&T Bell, del MIT y General Electric emprenden el desarrollo de un sistema operativo multiusuario al cual llamaron MULTICS (Multiplexed Information and Computing System). MULTICS poseía gran parte de las características que tiene hoy en día cualquier versión de UNIX como son la multitarea, la gestión de archivos y la interacción con usuarios. Sin embargo MULTICS nunca llegaría a completarse debido a numerosos contratiempos y retrasos en su implementación, ya que una de las mayores desventajas era la complejidad del software y hardware necesario para completar tareas cotidianas y sencillas para los usuarios. Posteriormente, Ken Thompson y Dennis Ritchie, unos de los investigadores que se involucraron en el proyecto MULTICS retoman la idea y desarrollan en 1969 en los laboratorios Bell el sistema operativo multiusuario UNIC (Uniplexion Information and Computing System), una revisión del sistema operativo MULTICS, escrito en un lenguaje ensamblador; y ejecutándose en una máquina DEC PDP-7, que posteriormente se adapto a un ordenador PDP-11. UNIC simplificaba las tareas de su antecesor. Mas tarde, el nombre sufre diferentes cambios hasta llegar al UNIX, tal y como se conoce hoy en día, con lo cual se puede deducir que UNIX surge de una versión reducida del proyecto MULTICS, si bien también ha sido influenciado por otros sistemas operativos como el CTSS (Compatible Time Sharing System) del MIT y el sistema XDS-940 de la Universidad de California de Berkeley. Recuerdese que en esos años cuando se compraba un ordenador, se tenía que comprar el sistema operativo proveído por el fabricante del equipo, por consiguiente posteriormente también se tenían que comprar las aplicaciones proporcionadas por el fabricante ya que son las que conocían como interactuar con el sistema operativo, y esas aplicaciones tenían un precio bastante alto, es decir, los usuarios estaban encadenados al fabricante del ordenador, era como el pez que se come la cola. Además, ciertas restricciones legales impedían a dichos laboratorios fabricar ordenadores, por lo que se dedicaban a comprar el hardware a otras empresas, necesitando algún mecanismo para portar el sistema operativo a distintas máquinas. El hecho de que UNIX estuviese escrito en ensamblador impedía la portabilidad a diferentes ordenadores. Thompson desarrolló un nuevo lenguaje de alto nivel: B, pero Dennis Ritchie en el 1973 lo mejora y le llama lenguaje C, rescribiendo UNIX totalmente en este lenguaje de alto nivel (muy apto para escribir sistemas operativos), haciendo por tanto el código casi totalmente independiente del tipo de máquina, permitiendo la instalación de UNIX en diferentes plataformas, logrando así una popularidad sin precedentes en el mundo de los sistemas operativos. Inicialmente los laboratorios AT&T Bell, consideran que UNIX era más bien un proyecto de investigación y lo llegó a distribuirse de forma gratuita entre departamentos informáticos de las universidades, los cuales lo podían modificar y adaptar a sus necesidades. La gran demanda del sistema operativo hace que los laboratorios Bell iniciara su venta a través de distribuciones oficiales concediendo a los usuarios que lo requerían licencias de uso. La primera versión de UNIX disponible fuera de los laboratiros Bell fue la Versión 6, ea el año 1976. En 1978 se distribuyó la Versión 7, que fue adaptada a otros PDP-11 y a una nueva línea de ordenadores de DEC denominada VAX. La versión para VAX se conocía como 32V. Tras la distribución de la Versión 7, UNIX se convirtió en un producto y no sólo ea una herramienta de investigación o educacional, debido a que el UNlX Support Group (USG) asumió la responsabilidad y el control administrativo del Research Group en la distribución de UNIX dentro de AT&T. En el periodo comprendido entre 1977 y 1982, los laboratorios BeIl combinó varios sistemas UNIX, desarrollados deatro de AT&T, con características de la Versión 7 y de la 32V, dando lugar aun único sistema cuyo nombre comercial fue UNIX System III. Ésta fue la primera distribución externa desde USG.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 2 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Los Laboratorios Bell más tarde añadieron muchas características nuevas al UNIX System III, llamando al nuevo producto UNIX System V, y AT&T anunció su apoyo oficial al System V en Enero de 1983. La modularidad, la sencillez de diseño y el pequeño tamaño de UNIX, hicieron que muchas empresas se pusieran a trabajar sobre él. La Universidad de Berkeley en Califomia creo una variante del sistema UNIX para máquinas VAX. Esta variante incorporaba varias características interesantes, tales como memoria virtual, paginación por demanda y sustitución de página, con lo cual se permitía la ejecución de programas mayores que la memoria física. A esta variante, desarrollada por Bill Joy y Ozalp Babaoglu, se la conoció como 3BSD (Berkeley Software Distribution). Esto llevo a que la Defense Advanced Research Projects Agency (DARPA) ayudase económicamente a Berkeley en el desarrollo de un sistema UNIX estándar el 4BSD. Los trabajos en 4BSD para DARPA fueron dirigidos por expertos en redes y UNIX, ya que la intención era que 4BSD incluyera la pila de protocolos TCP/IP.
2.
CARACTERÍSTICAS
Las características más relevantes del sistema son: □
UNIX ha sido diseñado como un sistema multiusuario en tiempo compartido; es decir, un sistema en el que pueden trabajar varios usuarios simultáneamente entre los cuales se reparten los recursos del sistema hardware, pensando cada usuario que tiene acceso exclusivo a la máquina. Proporciona protección de los datos privados sobre ficheros y también ofrece protección del entorno de ejecución
□
Portabilidad: Tal y como se comento anteriormente, UNIX fue escrito en el lenguaje C, un lenguaje de alto nivel, lo cual hace que sea relativamente fácil de leer, entender, modificar y transportar a otras máquinas con una arquitectura física diferente.
□
Interfaz de usuario simple e interactiva: el intérprete de órdenes (shell) es un programa independiente que el usuario puede sustituir. La sintaxis de utilización es idéntica para todas las órdenes.
□
Modularidad: Proporciona primitivas que permiten construir grandes programas a partir de otros más sencillos, asi como librerías para linkaje.
□
Posee bibliotecas compartidas para facilitar el enlace dinámico.
□
Protecciones de memoria.
□
Soporta diferentes sistemas de archivos, incluidos los de Microsoft Window
□
Sistema de archivos con estructura de árbol invertido (de múltiples niveles que permite un fácil mantenimiento) y jerárquico (permite la unión de diversos sistemas de ficheros con el sistema principal, y una separación de directorios).
□
Todos los archivos de usuario son simples secuencias de bytes (8 bits), no tienen ningún formato predeterminado.
□
Independencia de dispositivos: Los discos y los dispositivos de entrada y salida (E/S) se tratan todos de la misma manera: como meros archivos. Las peculiaridades de los dispositivos se mantienen en el núcleo (kernel).
□
La arquitectura de la máquina es completamente transparente para el usuario, lo que permite que los programas sean fáciles de escribir y transportables a otras máquinas con hardware diferente
□
UNIX no incorpora diseños sofisticados; de hecho, la mayoría de los algoritmos han sido seleccionados por su sencillez y no por su rapidez o complejidad.
□
Incorpora todos los servicios de red, TCP/IP, DNS, sendmail, etc.
□
Proporciona un completo entorno de programación: los filtros son utilidades simples que se concentran en realizar bien una sola función. Pueden combinarse de forma muy flexible utilizando las pipes y las redirecciones de E/S según las necesidades y preferencias de cada usuario.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 3 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
3.
□
Mantenimiento fácil: consecuencia directa de la modularidad. El sistema sigue evolucionando y se perfecciona y enriquece con nuevas funcionalidades.
□
Carácter abierto: permite ampliar fácilmente la funcionalidad con nuevos componentes sin tener que depender de un único fabricante.
TIPOS DE SHELL.
3.1.
INTRODUCCIÓN
Una gran parte del uso del Sistema UNIX consiste en que el usuario emitir órdenes y UNIX responder, para realizar esta labor, el usuario no se comunica directamente con el núcleo de UNIX sino que lo hace a través del intérprete de comandos o shell. Por lo tanto, el shell no es más que un intermediario entre el núcleo de UNIX y el usuario. Cuando se emite una orden nos relacionamos con el shell, la parte del Sistema UNIX a través de la cual se controlan los recursos del sistema operativo UNIX. El shell proporciona muchas de las características que hacen al Sistema UNIX un entorno potente y flexible. Se trata de un intérprete de órdenes, un lenguaje de programación, y más. Como intérprete de órdenes, el shell lee los comandos que se le introducen y dispone lo necesario para que se ejecuten. Además se puede utilizar el lenguaje de órdenes del shell como un lenguaje de programación de alto nivel para crear programas denominados guiones (scripts). Existen varios tipos de shell: □
El considerado estándar es el Bourne Shell (sh); es el que distribuye AT&T con el UNIX. La versión original fue desarrollada por Stephen Bourne en los Laboratorios Bell.
□
Otro de los más difundidos es el C Shell (csh), desarrollado en la Universidad de Berkeley en su mayor parte por Bill Joy. Fue diseñado teniendo en cuenta que los usuarios serían programadores en lenguaje C.
□
Otra versión ampliamente difundida es el Korn Shell (ksh), interfase escrita por David Korn.
□
Por ultimo existe el shell BASH (Bourne Again Shelll) que unifica las características del csh y ksh junto con la version inicial del Bourne Shell (sh)
Nos vamos a centrar en el shell del Sistema V (sh). El UNIX Sistema V Versión 4 (SVR4) también proporciona otros dos shells, el shell C (csh) y el shell Korn (ksh), que ofrecen varias ampliaciones valiosas al shell del Sistema V. Los conceptos y características que describiremos también se aplican al shell Korn, y la mayor parte de ellos se aplican al shell C. El shell C y el shell Korn se desarrollaron para disponer de características y capacidades adicionales que no ofrecía el sh. Comparado con sh, tanto csh como ksh disponen de un número de ampliaciones valiosas. Entre ellos están la edición de línea de orden, que posibilita editar las líneas de órdenes cuando se introducen; las listas de historias de órdenes, que permite revisar las órdenes que se han venido utilizando durante una sesión, y los alias de órdenes, que se pueden utilizar para dar a las órdenes nombres más convenientes. csh y ksh también proporcionan la posibilidad de utilizar órdenes desde una lista de comandos ya introducidos para simplificar la creación de órdenes nuevas, la protección de sobreescritura accidental en archivos existentes cuando se redirige la salida hacia ellos, un número de características convenientes y capacidades de programación del shell extendidas.
3.2.
SHELL DEL SYSTEM V: (sh)
Cuando usted se presenta al sistema, se inicia automáticamente un programa de shell. Este es el shell de presentación. El programa de shell particular que se ejecuta cuando se inicia sesión está determinado por su entrada en el archivo /etc/passwd.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 4 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Cuando se inicia su shell de presentación, se ejecuta un archivo denominado .profile que se encuentra en su directorio de presentación. Su .profile contiene órdenes que personalizan su entorno, por similitud sería como el fichero autoexec.bat en el sistema operativo MS-DOS® . El shell lee este archivo y lleva a cabo las instrucciones que contiene. El .profile es un ejemplo simple de guión de shell o script puesto que contiene a su vez órdenes o instrucciones para el shell y se utiliza para la personalización del entorno de trabajo: la definición de la variable PATH, fijar el tipo de terminal, cambiar el prompt por defecto, etc. El shell le informa que está listo para recibir su entrada visualizando una petición de orden. Por defecto, sh utiliza el signo dólar, $, como signo de petición de orden principal o primaria para los usuarios y el signo sostenido # como signo de petición de ordenes para el root o administrador. Para terminar la sesión en UNIX se teclea CTRL+D, o la orden exit. Muchas de las iteraciones con UNIX tienen la forma de dialogo con el shell. Este diálogo sigue una secuencia simple repetida una y otra vez. □
El shell solicita una orden y espera su introducción
□
Se introduce una orden tecleando una línea de orden.
□
El shell procesa la línea de orden para detenninar las acciones que debe llevar a cabo y visualiza el resultado.
□
Después de finalizar el programa, el shell solicita otra orden comenzando otro ciclo.
La parte de este ciclo que realiza el trabajo real es el paso tercero, cuando el shell lee y procesa la línea de orden y ejecuta las instrucciones que contiene.
3.2.1. ORDENES DE ENTRADA En general, una línea de orden contiene un comando y argumentos. Cada línea de orden finaliza con un NEWLINE, que es el término de UNIX para el carácter que se produce cuando se teclea RETURN. El shell no comienza a procesar la línea de orden hasta que recibe un RETURN . Los argumentos de la línea de orden son opciones que modifican lo que hace una orden y cómo lo hace, y la información que necesita, como puede ser el nombre de un archivo del que obtener datos. Las opciones normalmente se indican con un signo. A menudo la línea de orden incluye argumentos y símbolos que son realmente instrucciones para el shell. Por ejemplo, cuando se utiliza el símbolo > para dirigir la salida de una orden a un archivo, o el símbolo de cauce, I, para utilizar la salida de una orden como entrada a otra, o el ampersand, &, para ejecutar una orden en el modo subordinado, realmente se están dando instrucciones al shell. Normalmente se coloca una única orden o un cauce de dos o más órdenes en una única línea. Si es necesario se pueden introducir varias órdenes de una vez en una línea separándolas con punto y coma. Por ejemplo, la línea de orden siguiente dice al shell que ejecute en primer lugar date, y después ls, de la misma forma que se hubiese hecho tecleando cada una de las órdenes en una línea independiente. $ date; ls Esta forma de introducir órdenes es muy conveniente cuando hay que escribir una secuencia completa de órdenes antes de ejecutar ninguna de ellas.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 5 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
3.2.2. UTILIZACIÓN DE COMODINES PARA ESPECIFICAR ARCHIVOS El shell proporciona una forma de abreviar los nombres de archivos mediante el uso de patrones especiales o comodines que se utilizan para especificar uno más archivos sin tener que escribir los nombres completos. Se pueden utilizar comodines para especificar de una sola vez un conjunto completo de archivos, o para buscar un archivo cuando sólo s e conoce parte de su nombre. Por ejemplo, se puede utilizar el comodín * para listar todos los archivos del directorio actual con la extensión rpm: $ ls *.rpm. El shell proporciona tres comodines para nombres de archivos: *, ? y [. ..]. □
El asterisco identifica a una cadena de cualquier número de caracteres (incluyendo cero caracteres); por ejemplo: *data identifica a cualquier nombre de archivo terminado en "data", incluyendo data y file.data.
□
El signo de interrogación identifica a cualquier carácter simple; por ejemplo: .memo? identifica a cualquier nombre de archivo que conste de "memo" seguido por exactamente un carácter.
□
Los corchetes se utilizan para definir clases de caracteres que identifican a cualquiera perteneciente al conjunto que engloba. Por ejemplo: [Jj]mf identifica a los nombres de archivos jmf o Jmf. Se puede indicar un rango o secuencia de caracteres entre corchetes con un -. Por ejemplo: temp [a-c] identifica a tempa, tempb y tempc.
Existe una excepción importante a la declaración de que * identifique a cualquier secuencia de caracteres. No con un . (punto) al comienzo de un nombre archivo. Para identificar un nombre de archivo que comienza con. (punto), hay que incluir un punto en el patrón. La necesidad de indicar explícitamente un . inicial es consistente con el hecho de que los archivos con nombres que comienzan con . son tratados como archivos ocultos, que se utilizan para mantener información necesitada por el sistema o por órdenes particulares, pero que normalmente no se necesita visualizar . Cuando el shell procesa una línea de orden, sustituye en forma ordenada cualquier palabra que contenga comodines de nombres de archivos por los nombres de archivos identificados. Si no existen nombres de archivos que se identifiquen con el patrón especificado, el shell no realiza ninguna sustitución.
3.2.3. ENTRADA Y SALIDA ESTÁNDAR Una de las características del Sistema UNIX es la forma general y flexible de tratar los archivos y la facilidad con la que se puede controlar el lugar desde donde los programas obtienen la entrada y envían la salida. La salida de una orden puede enviarse a la pantalla, almacenarse en un archivo o utilizarse como entrada a otra orden. Análogamente, la mayor parte de las órdenes aceptan entrada desde teclado, desde un archivo almacenado o desde la salida de otra orden. La orden no necesita saber de dónde viene la entrada o a dónde va la salida. Es el shell el que establece estas conexiones, en base a las instrucciones de la línea de orden. Una de las funciones más importantes del shell consiste en gestionar la entrada y salida estándar, de manera que sólo se necesite especificar de dónde obtiene el comando la entrada ya dónde debe enviar la salida. Esto se realiza mediante el mecanismo de redirección de entrada y salida
REDIRECCIONES La siguiente tabla lista los símbolos utilizados para decir al shell dónde obtener la entrada y adónde enviar la salida. A éstos se les denomina operadores de redirección del shell.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 6 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Símbolo < >
Ejemplo cmd < file cmd > file
>>
cmd >> file
|
cmd1 | cmd2
Función La entrada del comando será el fichero no el teclado La salida del comando se envía a fichero no a pantalla. Si el fichero no existe se crea, si existe se machaca el contenido La salida del comando se añade a fichero no a pantalla. Si el fichero no existe se crea, si existe se añade la salida del comando al final del mismo Envía la salida del comando1 al comando 2 Operadores de redirección
□
Redirección de la salida. Se utilizan dos operadores: à
Operador > hace que el shell envíe la salida de un comando determinado a un fichero. Si ya existe un archivo con ese nombre en el directorio actual, se sobreescribe. Si no existe un archivo con ese nombre, el shell crea uno antes de ejecutar la orden.
à
Operador » lo mismo que el anterior solo que añade datos a un archivo sin eliminar los ya existentes.
□
Redirección de la entrada. se utiliza el operador < que le indica al shell que utilice el archivo siguiente como entrada estándar de una orden.
□
Tuberías o cauces: Es otra forma de redirección de la salida proporcionada por el shell. El símbolo del cauce, I, dice al shell que tome la salida estándar de una orden y la utilice como entrada estándar de otra orden. Se pueden utilizar combinaciones de herramientas simples unidas mediante cauces para toda clase de tareas.
3.2.3. VARIABLES DEL SHELL El shell dispone de un mecanismo para definir variables que se utilizan para almacenar información utilizada por los programas del sistema o por el usuario. Las variables del shell se pueden utilizar para personalizar o particularizar la información relativa a nombres de directorios y de archivos que necesitan los programas y para personalizar la forma en la que los programas (incluyendo el propio shell) interactúan con el usuario.
VARIABLES COMUNES DEL SHELL A continuación se muestran algunas de las variables del shell más comunes, incluyendo aquellas que fija automáticamente el sistema. □
HOME contiene el nombre de camino absoluto del directorio de recepción. HOME es definida automáticamente. El propio shell utiliza esta información para determinar el directorio al que cambiar cuando se teclea la orden cd sin argumento
□
PATH lista, en orden, los directorios en los que el shell busca para encontrar el programa a ejecutar cuando se teclea una orden. PATH contiene una lista de nombres de directorios, separados por dos puntos. Un PATH por defecto es puesto por el sistema, pero la mayor parte de los usuarios lo modifican para añadir directorios de órdenes adicionales. Un campo vacío en la cadena PATH significa buscar en el directorio actual (un campo vacío es aquel con dos puntos, pero sin nombre de directorio).
□
CDPATH es similar a PATH. Lista en orden los directorios en los que busca el shell para encontrar un subdirectorio a cambiar cuando se utiliza la orden cd. Los directorios que busca el shell se listan de la misma forma que los directorios de su PATH.
□
PSl y PS2 definen los signos de sus peticiones de orden primaria y secundaria, respectivamente. Sus valores por defecto son $ para PSl y > para PS2.
□
LOGNAME contiene su nombre de presentación. Lo fija automáticamente el sistema.
□
MAIL contiene el nombre del directorio en el que se coloca el correo nuevo. El shell utiliza esta variable para notificar cuándo se añade nueva información en su directorio.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 7 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
MAILFILE se utiliza para saber dónde colocar el nuevo correo.
□
SHELL contiene el nombre de su programa de shell. Es utilizado por el editor vi y por otras órdenes interactivas para determinar qué programa de shell ejecutar cuando se trabaja en modo control.
□
TERM es utilizada por vi y otros programas orientados a pantalla para obtener información sobre el tipo de terminal que se está utilizando. Esta información es necesaria para permitir a los programas que comparen su salida con las capacidades del terminal y para interpretar su entrada correctamente.
Obtención del valor de una variable de shell Además de fijar valores, a veces se necesita obtener el valor de una variable del shell. Para obtener el valor de una variable del shell, se precede el nombre de la variable con un signo dólar, $. Cuando el shell lee una línea de orden, interpreta cualquier palabra que comienza con $ como una variable y la sustituye con el valor de la variable. Para ver el valor de una variable, puede utilizar la orden echo. Esta orden produce eco (imprime) de la entrada estándar en su salida estándar. Se puede utilizar la orden set para ver todas las variables actuales del shell y sus valores. Por ejemplo:
DEFINICIÓN DE LAS VARIABLES DEL SHELL Aunque HOME, PS1, PS2 y otras variables comunes son fijadas automáticamente por el sistema, a otras no les ocurre esto y se pueden definir sus valores. TERM y MAILFILE son ejemplos de variables del shell que no se definen automáticamente. Una variable del shell se define escribiendo su nombre seguido por un signo = y su valor. Para poner la variable de terminal a vt100, se utiliza la orden: $ TERM=vtlOO De Ia misma formas se pueden redefinir algunas de las variables actuales, como HOME y PS1. Siempre que se le dan valores a las variables no deben existir espacios entre el nombre de la variable, el signo = y el valor. El valor puede contener un espacio o incluso uno o más NEWLINES pero si los contiene, debe ir entre comillas. Por ejemplo, se puede definir una petición de orden de dos palabras: $ PS1="hi there:" Para eliminar una variable se utiliza la orden unset.
DEFINICIÓN DE SUS PROPIAS VARIABLES DEL SHELL Se trata de una forma conveniente de almacenar información utilizada con frecuencia en líneas de órdenes. Por ejemplo, si se mueve con frecuencia archivos a un directorio particular, se puede definir una variable con el nombre del directorio. Cuando el shell lee una línea de orden, sustituye cualquier palabra que comience con un $ con el valor de la variable que tiene ese nombre.
VARIABLES DEL SHELL Y EL ENTORNO Cuando se ejecuta una orden, el shell pone a disposición del programa un conjunto de variables del shell y sus valores. El programa puede entonces utilizar esta información para personalizar sus acciones. La colección de variables y valores de un programa se denomina el entorno. El entorno incluye las variables fijadas por el sistema, tales como HOME, LOGNAME y PATH. Se pueden visualizar sus variables de entorno con la orden: env
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 8 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Algunas de las variables definidas por el sistema son incluidas automáticamente en su entorno. Pero para ponerlas a disposición de otras órdenes diferentes de las del propio shell deben ser exportadas. Algunas de las variables estándar descritas anteriormente se exportan automáticamente al entorno. Pero otras, incluyendo cualquier variable que defina el usuario y cualquier valor de una variable estándar que se cambie, no. Se utiliza la orden export para hacer que el valor de una variable esté disponible a otros programas.
3.3.
El C-SHELL (csh)
El shell C proporciona casi todas las características del shell estándar descritas anteriormente. Existen sin embargo algunas diferencias básicas en el vocabulario del lenguaje de órdenes y en la sintaxis: □
Presentación e iniciación. Cuando se inicia sh, mira en su .profile órdenes iniciales y definiciones de variables. El shell C sigue un procedimiento similar, pero utiliza dos archivos, denominados. cshrc y .login. csh lee .login sólo cuando el usuario inicia sesión. El archivo .login deberá contener órdenes y definiciones de variables que sólo necesitan ser ejecutadas al comienzo de la sesión. El archivo. cshrc es un archivo de iniciación. La "rc" significa "read commands" (órdenes de lectura). Para programas convencionales se busca normalmente la información de iniciación en archivos que finalizan en "rc". La diferencia entre .cshrc y .login es que el csh lee .login sólo en la presentación, pero lee .cshrc tanto al comienzo de una sesión como cuando se le invoca desde el shell de presentación -por ejemplo, cuando se ejecuta un guión de shell-. El archivo .cshrc incluye órdenes y definiciones que se necesitan ejecutar cada vez que entra en un shell, no sólo al principio. .cshrc debería incluir las definiciones de variables que utiliza el shell pero que no son variables de entorno. Las variables de entorno deben definirse en. login.
□
□
□
Variables del shell C. El shell C dispone de variables, incluyendo variables estándar definidas por el sistema y variables definidas por el usuario. Diferencias con sh: à
Para definir una variable en csh se utiliza la orden set.
à
csh permite espacios entre el nombre de la variable, el signo = y el valor; sh no.
à
csh utiliza letras minúsculas para las variables ordinarias; la práctica usual en sh es utilizar letras mayúsculas.
Variables especiales del shell C. El shell C utiliza un número de variables especiales. Algunas de ellas son directamente equivalentes a las variables de sh. Las siguientes son algunas variables especiales del shell C que usted debería conocer. à
cwd mantiene el nombre completo del directorio de trabajo actual. Proporciona la información que utiliza la orden pwd para visualizar su directorio actual
à
home es el nombre de camino completo de su directorio de presentación. Corresponde a la variable HOME utilizada en sh y ksh.
à
path mantiene la lista de directorios en los que busca el shell C para encontrar un programa cuando ejecuta sus órdenes. Corresponde a PATH.
à
cdpath es la variable del shell C equivalente a la variable CDPATH del shell del Sistema V.
à
prompt es la equivalente a PSl del shell del Sistema v. El valor por defecto de la petición de orden (prompt) del shell C es %, o a veces system%, donde system es el nombre de su sistema UNIX.
à
mail informa al shell de la frecuencia con que tiene que chequear el correo nuevo y dónde buscarlo, por ejemplo: set mail = ( 60 $home/mail )
Variables multievaluadas El shell C utiliza paréntesis para agrupar distintas palabras que representan distintos valores de una variable. Esto permite definir y utilizar las variables del shell C como arrays.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 9 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
□
□
Variables de conmutación para activar características del shell C. El shell C utiliza variables especiales denominadas de conmutación para activar o desactivar ciertas características. Las variables de conmutación son variables que tienen sólo dos valores: activas y desactivas. Cuando se define con la orden set una variable de conmutación, activa la correspondiente característica. Para desactivarla se utiliza unset. Variables de conmutación importantes son noclobber, ignoreeof y notify. à
noclobber impide sobrescribir un archivo existente cuando se redirige la salida desde una orden. Se puede indicar explícitamente a csh que realmente quiere sobrescribir el archivo, colocando un signo de exclamación después del símbolo de redirección: % ls -1 >! temp
à
.ignoreeof impide que accidentalmente se salga de la sesión tecleando CTRL-D. Sin ignoreeof, un CTRL-D al comienzo de una línea de orden termina su shell y sale del sistema. Si activa ignoreeof, el shell ignora CTRL-D.
à
notify informa de cuándo termina un trabajo en modo subordinado. Si la variable notify está activa, el shell visualizará un mensaje de finalización del trabajo cuando termine la ejecución un trabajo en modo subordinado. Esta variable de conmutación se fija por defecto, pero si usted no quiere obtener mensajes de terminación de trabajos, puede des activarla.
Variables de entorno. Una variable de entorno es una variable que está disponible a las órdenes como parte del entorno que mantiene el shell. Recuerde que sh define variables de entorno de la misma forma que las otras variables y utiliza export para incluir una variable en el entorno. à
El shell C no utiliza la orden export para colocar una variable en el entorno. En lugar de ello, utiliza una orden especial, setenv, para definir variables que son parte del entorno. Para definir variables de entorno no existe signo = entre el nombre de la variable y su valor. Por ejemplo, setenv term vt100
à
Puede ver todo lo referente a las variables de entorno con la orden env
à
Para eliminar una variable de entorno se utiliza unsetenv.
Historia de órdenes. El shell C mantiene un registro o lista de todas las órdenes que se introdujeron durante una sesión. Se puede examinar la lista de historia para buscar órdenes particulares. à
Con la orden history se puede visualizar la lista de las últimas líneas de órdenes.
□
Alias. El shell C permite definir alias de órdenes simples. Un alias de una orden es una palabra (el alias) y algún texto que es sustituido por el shell cuando la palabra se utiliza como orden. Se pueden utilizar alias para incluir automáticamente opciones particulares cuando se ejecuta una orden y para dar nombres cortos a órdenes que usted teclea con frecuencia.
□
Abreviatura de directorios de presentación. El shell C proporciona una forma fácil de abreviar el nombre de camino del directorio de recepción que es utilizando el símbolo tilde (~) al comienzo de una palabra en la línea de orden. Esto hace que el shell la sustituye con el nombre completo de camino del directorio de recepción. Por ejemplo, rm -/newfile es la forma abreviada de teclear rnv $home/newfile
□
Redirección del error estándar en el shell C. csh proporciona una forma para redirigir tanto la salida estándar como el error estándar al mismo archivo. Por ejemplo, $ find .-type f -print >& output-file & # C shell ejecuta find en el modo subordinado y envía la salida estándar y los mensajes de error a output-file. Sin embargo, el shell C no permite que se redirija el error estándar independientemente de la salida estándar.
□
3.4.
Terminación del nombre de archivo. La característica de terminación de nombre de archivo del shell C proporciona una forma conveniente para introducir nombres de archivos en órdenes. Para ello es necesario activar la variable de conmutación filec. Con filec, si se teclea la primera letra o letras de un nombre de archivo y después se teclea CTRL-D, csh expandirá el nombre parcial para hacerlo coincidir con un nombre de archivo del directorio actual.
EL SHELL KORN (ksh)
El shell Korn proporciona un superconjunto altamente compatible de características del shell del Sistema V. Incorpora la mayor parte de las ampliaciones que se encuentran en el shell C, así como muchas otras
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 10 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
características potentes, conservando la sintaxis y características básicas del sh. Los programas de shell escritos para sh corren generalmente sin modificación bajo ksh. □
Presentación e iniciación. Como el shell C, el shell Korn utiliza dos archivos de iniciación -uno sólo para la presentación, el otro cada vez que se ejecuta ksh. De la misma forma que sh, ksh lee el archivo .profile para buscar las órdenes que se quieren ejecutar en inicia de sesión y las variables y valores que se requiere que estén activas a lo largo de la sesión. Además de leer el .profile, cada vez que inicializa ksh también lee un archivo de entorno. El archivo de . entorno es análogo al archivo. cshrc del shell C. A diferencia de csh, ksh no supone que este archivo tiene un nombre o posición particular. El nombre y posición se definen con la variable ENV, de .profile.
□
Variables del shell Korn. El shell Korn implementa todas las características del shell estándar relacionadas con variables e incluye todas las variables del shell estándar. Se pueden defInir o redefinir variables, exportarlas al entorno y obtener sus valores. El shell Korn utiliza algunas de las variables del shell del Sistema V, entre las que se encuentran: CDPATH, HOME, LOGNAME, MAIL, MAILCHECK, MAILPATH, PATH, PSI, PS2, SHELL y TERM. Algunas variables utilizadas por el shell Korn que no se utilizan en sh son: à
ENV dice a ksh dónde encontrar el archivo de entorno que se lee en la iniciación.
à
HISTSIZE dice a ksh cuántas órdenes guardar en el archivo de historia-
à
TMOUT dice a ksh cuántos segundos esperar antes de producirse un fuera de tiempo si no se pulsa una orden.
Para ver las variables de shell actuales y sus valores se utiliza la orden set.
4.
□
Fijación de las opciones del shell Korn. El shell Kom proporciona un número de opciones que activan características especiales. Estas incluyen las opciones noclobber e ignoreeof que son idénticas a las proporcionadas por las variables de conmutación del shell C, así como una opción para activar la edición de línea de orden.
□
Historia de órdenes. El shell Kom mantiene una historia de las órdenes que se van introduciendo al trabajar en una sesión. Para ver las últimas órdenes que se introdujeron tecleando history. El número de líneas de órdenes que mantiene ksh viene controlado por la variable del shell HISTSIZE.
□
Alias. De la misma forma que el shell C, el shell Kom permite definir alias de órdenes simples. Los alias se definen en el shell Kom de la misma forma que se definen las variables. En particular, como ocurre con las variables del shell, no deben existir espacios entre el nombre del alias, el signo = y su valor. También, si el valor incluye espacios (por ejemplo, un nombre de orden y opciones), deben ir entre comillas.
□
Abreviatura de los directorios de presentación. El shell Kom proporciona una forma fácil para abreviar los nombres de caminos de los directorios de trabajo usando el símbolo tilde ~.
ESTRUCTURA DE ARCHIVOS
Un pilar básico del Sistema UNIX es el sistema de archivos jerárquico. El sistema de archivos proporciona una forma potente y flexible de organizar y gestionar los datos contenidos en el ordenador. Aunque muchas de las características del sistema de archivos se inventaron originalmente para el Sistema UNIX, su estructura ha resultado ser tan útil que se ha adoptado por muchos otros sistemas operativos. Por ejemplo, DOS adoptó muchos de sus atributos importantes. Un archivo es la estructura básica utilizada para almacenar información en el Sistema UNIX. El nombre de archivo identifica de manera unívoca al archivo. El sistema operativo UNIX conoce dónde está localizado el archivo y guarda además otro tipo de información sobre el archivo. Se puede definir formalmente el término archivo como un conjunto de datos con un nombre asociado. Los archivos suelen residir en dispositivos de almacenamiento secundario, tales como cintas, discos rígidos o disquetes. TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 11 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
La razón de asignar un nombre a cada archivo es que de este modo tanto los usuarios como los programas pueden hacer referencia a los mismos de una forma lógica. Los procesos o programas en ejecución disponen de un conjunto de funciones proporcionadas por el sistema operativo para poder manipular esos archivos. Ese conjunto de funciones se conoce con el nombre de llamadas al sistema. El concepto de llamada al sistema es más amplio, pues engloba también funciones relacionadas con la manipulación de procesos y dispositivos. Un proceso es un programa en ejecución que puede escribir datos en un archivo mediante la llamada al sistema write y leerlos más tarde, o bien dejarlos allí para que otros procesos puedan leerlos mediante la llamada al sistema read. También los procesos tienen la posibilidad de crear archivos, añadir o eliminar información en ellos, desplazarse dentro para consultar la información deseada, etc. a partir del correspondiente conjunto de llamadas al sistema. En cierto modo, se puede entender un archivo como una extensión del conjunto de datos asociados a un proceso, pero el hecho de que estos datos continúen existiendo aunque el proceso haya terminado, los hace especialmente útiles para el almacenamiento de información a largo plazo. Todo el trabajo de los usuarios de un Sistema UNIX está almacenado en archivos. En algunos sistemas podría ser difícil e incluso imposible encontrar un archivo. El Sistema UNIX tiene varias capacidades que facilitan mucho este trabajo. Algunas de estas capacidades tienen que ver con la naturaleza básica del sistema de archivos. Otras tienen que ver con los programas de utilidad disponibles en el Sistema UNIX. Algunos sistemas operativos imponen a todos sus archivos una estructura determinada bien definida. En UNIX un archivo no es más que una secuencia de bytes (8 bits). Algunos programas esperan encontrar estructuras de diferentes niveles, pero el núcleo (kernel) no impone ninguna estructura sobre los archivos. Por ejemplo, los editores de texto esperan que la información guardada en el archivo se encuentre en formato ASCII, pero el núcleo no sabe nada de eso. Un sistema de archivos se puede definir como aquella parte del sistema responsable de la administración de los datos en dispositivos de almacenamiento secundario. El sistema de archivos debe proporcionar los medios necesarios para un almacenamiento seguro y privado de la información y, a la vez, la posibilidad de compartir esa información en caso de que el usuario lo desee.
4.1.
CARACTERÍSTICAS SISTEMA DE ARCHIVOS
Entre las características más relevantes del sistema de archivos UNIX podemos citar las siguientes: □
Los usuarios tienen la posibilidad de crear, modificar y borrar archivos y directorios.
□
Para cada archivo se definen tres tipos de acceso diferentes: acceso de lectura, acceso de escritura y acceso de ejecución. Estos tres tipos de acceso se le aplican al creador del archivo, al grupo al que pertenece y al resto de los usuarios del sistema; con esto los archivos se pueden compartir.
□
Proteger los datos de los archivos. Cada archivo tiene una serie de derechos asociados, los cuales determinan y limitan los posibles accesos por parte de otras personas.
□
Cada usuario puede estructurar sus archivos como desee, el núcleo de UNIX no impone ninguna restricción, ya se encargan los programas de darle un sentido a los ficheros.
□
UNIX ofrece herramientas para realizar copias de seguridad de ficheros para prevenir la pérdida de la información.
□
Proporciona la posibilidad de cifrado y descifrado de información. Eso se puede hacer para que los datos sólo sean útiles para las personas que conozcan la clave de descifrado.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 12 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
El usuario tiene una visión lógica de los datos, es el sistema el encargado de manipular correctamente los dispositivos y darle el soporte físico deseado ala información. El usuario no tiene que preocuparse por los dispositivos físicos, es el sistema el que se encarga de la forma en que se almacenan los datos en los dispositivos y de los medios físicos de transferencia de datos desde y hacia los mismos.
□
Tratar a los dispositivos de entrada salida como si fuesen archivos.
□
Tiene una estructura jerárquica en forma de árbol invertido.
□
Realizar un tratamiento consistente de los datos de los archivos.
□
Es un sistema de archivos dinámico porque permite crear, modificar y eliminar ficheros.
□
Los archivos aumentan su tamaño dinámicamente, no teniendo el usuario que especificar previamente un tamaño.
En UNIX los archivos están organizados en lo que se conoce como directorios. Un directorio no es más que un archivo algo especial, el cual contiene información que permite localizar otros archivos. Los directorios pueden contener, a su vez, nuevos directorios, los cuales se denominan subdirectorios. A la estructura resultante de esta organización se la conoce con el nombre de estructura en árbol invertido. En el árbol, todos los archivos y directorios dependen de un único directorio denominado directorio raíz o root, el cual se representa por el símbolo slash "/". En caso de que tengamos vatios dispositivos físicos de almacenamiento secundario en el sistema (normalmente discos o particiones de disco), todos deben depender del directorio raíz, y el usuario tratará cada uno de los discos como un subdirectorio que depende, directa o indirectamente,
4.2.
ALMACENAR DATOS.
Al almacenar los datos de un fichero en un disco existen dos fórmulas: □
Asignación continua: Se colocan los k bytes que ocupa un fichero consecutivamente en el disco, Esta solución tiene el problema de que si el fichero crece será necesario mover el fichero a otra ubicación, es decir, tendremos fragmentación externa.
□
Asignación discontinua: Los k bytes que ocupa el fichero se dividen en x bloques de un tamaño z y se colocan de forma no contigua en el disco en bloques. Esto tiene el problema que si el tamaño del bloque es muy grande se produce fragmentación interna y si el tamaño del bloque es muy pequeño se aumenta el tiempo de acceso. Generalmente, el tamaño del bloque es de 512, 1024 o 2048 bytes.
Unix utiliza asignación discontinua
4.3.
NOMBRES DE ARCHIVO
Un nombre de archivo puede ser casi cualquier secuencia de caracteres (generalmente dos nombres de archivos se consideran el mismo si coinciden en los primeros catorce caracteres, de manera que se debe tener cuidado si se excede en este número de caracteres. Sin embargo, esto sólo ocurre para ciertos tipos de archivos). El Sistema UNIX coloca pocas restricciones sobre cómo nombrar archivos. Se pueden utilizar caracteres ASCII, aunque es muy necesario no incluir caracteres no imprimibles (tecla ctrl., alt, etc), espacios en blanco, tabulador, y los meta caracteres del shell. En cuanto a la extensión decir que UNIX es indiferente a la extensión, aunque es recomendable darle la extensión que espera la aplicación que trata el fichero, por ejemplo el compilador de java espera un .java
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 13 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Cuando se crean archivos y directorios, está trabajando con un programa importante del Sistema UNIX denominado el shell. Debería evitar utilizar caracteres en los nombres de archivos que tengan significado especial para el intérprete de órdenes shell.
4.4.
TIPOS DE ARCHIVOS
UNIX distingue cinco tipos de archivos: archivos sencillos, directorios, enlaces simbólicos o vinculos, archivos de dispositivos, y tuberías (pipes) con nombre. Archivos ordinarios. Se utilizan para almacenar información en dispositivos de almacenamiento secundario como discos duros, disquetes, cdrom, etc. Los archivos ordinarios pueden almacenar datos, imágenes, código, ejecutables. UNIX no asocia ninguna estructura ni ningún significado al contenido del archivo, ya que para él un archivo no es mas que una ristra de bytes. La encargada de darle un significado a esa ristra de bytes es la aplicación que maneja el fichero. Por ejemplo el editor de textos vi espera que el contenido de un fichero sea caracteres ASCII, un navegador web espera que el contenido sea una pagina html, etc. Vínculos. Un vínculo no es una clase de archivo, sino un segundo nombre para un archivo. Si dos usuarios necesitan compartir la información de un archivo, ellos pueden tener copias separadas de este archivo. Un problema al mantener copias separadas es que las dos copias pueden rápidamente perder la consistencia. Por ejemplo, un usuario puede realizar cambios que el otro podría no conocer. Un vínculo proporciona la solución a este problema. Con un vínculo, dos usuarios pueden compartir un único archivo. Ambos usuarios parecen tener copias del archivo, pero solamente existe un archivo con dos nombres. Los cambios que cualquier usuario realiza tienen lugar sobre la versión común. Este vínculo no solamente ahorra espacio al tener una única copia de un archivo, sino que asegura que la copia que cada uno utiliza es la misma. A este tipo de vínculo también se le denomina vínculos duros (hard links). Sin embargo, existen un tipo especial de vínculos denominado “Vínculos simbólicos”: Los vínculos se pueden utilizar para asignar más de un nombre a un archivo. Pero tienen algunas limitaciones importantes. No se pueden utilizar para asignar a un directorio más de un nombre. y no se pueden utilizar para vincular nombres de archivos sobre computadoras diferentes. Esto es un fallo importante de los vínculos, ya que la Versión 4 proporciona dos sistemas de archivos distribuidos, NFS y RFS, que hacen posible la compartición de archivos entre computadoras. Estas limitaciones pueden eliminarse utilizando vínculos simbólicos, introducidos en el UNIX Sistema V Versión 4 procedente de BSD. Un vínculo simbólico es un archivo que sólo contiene el nombre de otro archivo. Cuando el sistema operativo opera sobre un vínculo simbólico, éste se dirige al archivo al que apunta el vínculo simbólico. Los vínculos simbólicos no sólo se pueden utilizar para asignar más de un nombre a un archivo, sino que pueden usarse para asignar más de un nombre a un directorio. Los vínculos simbólicos también pueden ser utilizados por vínculos que residen en sistemas de archivos físicos diferentes. Esto hace posible que un árbol de directorio lógico incluya archivos que residen sobre computadoras diferentes que están conectadas a través de una red. Es análogo a lo que Microsoft Windows® denomina accesos directos. Directorios. Un directorio es un archivo que contiene información sobre las localizaciones y atributos de otros archivos. Básicamente un directorio es un contenedor de un grupo de archivos organizados de la forma deseada. Es el concepto de carpetas de otros sistemas operativos.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 14 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Sobre el Sistema UNIX, un directorio también puede contener otros directorios. Un directorio dentro de otro directorio se denomina subdirectorio. Se puede subdividir un directorio en tantos subdirectorios como desee, y cada uno de ellos puede contener tantos subdirectorios como quiera. La estructura del directorio es la siguiente: Cada entrada en el directorio contiene el nombre del archivo y su número de inode. La cantidad de bytes reservada para el nombre del archivo suele ser 256 caracteres. Toda la información relativa al archivo está almacenada en su inode. Todos los directorios en UNIX son archivos y pueden contener cualquier número de entradas, además no existe limitación en el número de archivos o subdirectorios que se pueden almacenar en un directorio. Numero de inode
Nombre del archivo
Entrada de un directorio Archivos de dispositivos. UNIX se comunica con los dispositivos periféricos por medio de los archivos de dispositivo, por lo tanto se puede ver un archivo de dispositivo como un archivo especial que representa un dispositivo fisico. Puede ser un terminal, un tarjeta de red, disco duro SCSI o IDE, etc, es decir, es el medio utilizado para acceder a dispositivos hardware, estando por tanto, cada hardware asociado a un archivo especial. Desde la perspectiva del usuario, el Sistema UNIX trata los archivos especiales como archivos ordinarios; esto es, puede leer o escribir los dispositivos exactamente como lee y escribe los archivos ordinarios. Sin embargo no contienen datos sino información de la ubicación del dispositivo y de cómo se va a comunicar UNIX con el mismo. Esta forma de tratar el hardware del sistema tiene una consecuencia importante para los usuarios del Sistema UNIX. Puesto que UNIX trata casi todo como si fuese un archivo, no se necesita aprender las particularidades del hardware de la computadora. Una vez que se aprende a manejar los archivos del Sistema UNIX, se sabe cómo manejar todos los objetos del Sistema UNIX. Los archivos de dispositivos se almacenan en un directorio especial de UNIX: /dev pudiendo ser de dos tipos: □ Archivos de dispositivo en modo carácter □
Archivos de dispositivo en modo bloque.
Archivos de dispositivo en modo bloque: Los archivos de dispositivo modo bloque son aquellos que manejan dispositivos en modo bloque. Los dispositivos modo bloque transfieren datos en bloques de longitud fija a través de buffers de entrada salida. Los dispositivos que usan estos archivos son dispositivos de almacenamiento y acceso aleatorio, es decir, discos, cdroms, etc Para crear este tipo de archivos se utiliza el comando mknod Archivos de dispositivo en modo carácter: Los archivos de dispositivo en modo carácter son aquellos que manejan dispositivos en modo carácter. Los archivos de dispositivo de tipo carácter son aquellos que la entrada salida se realiza carácter a carácter no necesitando de ningun tipo de sistema de archivos en especial, por lo tanto no se utilizan los buffers. Algunos ejemplos de este tipo de archivos son: monitores, impresoras, etc. Al igual que los archivos de dispositivo modo bloque, estos archivos se crean mediante la llamada al sistema mknod Algunos de los archivos de dispositivos más relevantes son: □
/dev/dsk Archivo de dispositivo modo bloque de las unidades de disco duro. à
En Linux los discos duros tienen como archivo de dispositivo IDE el archivo /dev/hdxy, donde “x” es una letra que varia en función de la interfaz IDE a la que este conectado el dispositivo en placa y a la configuración de este (maestro y esclavo):
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 15 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
a para el dispositivo conectado al IDE 1 como maestro
b para el dispositivo conectado al IDE 1 como esclavo
c para el dispositivo conectado al IDE 2 como maestro
d para el dispositivo conectado al IDE 2 como esclavo
e “y” es un numero que indica la partición del disco:
hdb1 partición primera del disco duro conectado al IDE1 como esclavo.
hdb2 partición secundaria del disco duro conectado al IDE1 como esclavo.
□
/dev/sdxy Archivo de dispositivo modo bloque para los discos de tipo SCSI (Small Computer Standard Interface). xy identifica el número de disco y su partición correspondiente.
□
/dev /fdx Archivo de dispositivo correspondiente al disco flexible x.
□
/dev /ttyNN Archivo correspondiente al terminal NN.
□
/dev/lpx Archivo correspondiente a la impresora x.
□
/dev/cdrom Archivo de dispositivo asociado al CD-ROM.
Estos archivos, al hacer un listado del directorio /dev, se identifican por su nombre y por dos números, llamados número mayor (major numbetr) y número menor (minor number). El primero de ellos coincide para todos los dispositivos del mismo tipo y con el segundo se diferencia entre distintos dispositivos de la misma familia. Ambos números son empleados por el núcleo. Tuberías con nombre (pipes) Son mecanismos de comunicación que permiten la transferencia de datos entre dos procesos. A continuación se vera como crear archivos de dispositivo, pipes o sockets. Tanto los ficheros especiales orientados a caracter como los orientados a bloque, y tambien los pipes, se crean con la orden mknod (MaKe NODe). La sintaxis básica de mknod es la siguiente:
mknod [tipo] major minor
donde: □
nombre que queremos asignarle al archivo.
□
[tipo] Contiene los valores: à
p (pipe)
à
c (character)
à
b (block),
□
major corresponden a lo que se denomina major number, número principal de un archivo de dispositivo y designa un tipo de periférico (impresoras, discos duros, terminales...),
□
minor corresponden a lo que se denomina minor number, número secundario de un archivo de dispositivo hace referencia a un elemento de dicha clase de dispositivo (la impresora conectada a lp0, la terminal número 3...).
4.5.
ESTRUCTURA INTERNA DEL SISTEMA DE ARCHIVOS
En la estructura del sistema de archivos de un UNIX versión System V se distinguen cuatro partes: □
El bloque de arranque.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 16 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
El super bloque.
□
La lista de nodos índice
□
Los bloques de datos.
Vamos a describir a continuación cada una de estas partes.
4.5.1. EL BLOQUE DE ARRANQUE Se sitúa al comienzo del sistema de archivos, en el primer sector, y contiene el código de arranque que es un programa que se encarga de buscar el sistema operativo y cargarlo en memoria para iniciar la máquina.
4.5.2. EL SÚPER BLOQUE El súper bloque ocupa el primer bloque lógico del disco y describe el estado de un sistema de archivos El súper bloque es la pieza mas importante en cualquier sistema de archivos, tanto que si se daña se pierden todos los datos almacenados en el: sistema de archivos que representa. Para evitar esto, el superbloque es redundante, es decir, existen varias copias del mismo, distribuidas por el disco para evitar los inconvenientes de su pérdida En el súper bloque se almacena la siguiente información: □
Tamaño del sistema de archivos.
□
Tamaño de cada bloque de disco.
□
Lista de bloques libres.
□
Índice del siguiente bloque libre en la lista de bloques libres.
□
Tamaño de la lista de inodes.
□
Número de inodes libres
□
Lista de inodes libres
□
Índice del siguiente inode libre en la lista de inodes libres
□
Bandera (flag) que indica si el super bloque se ha modificado o no.
4.5.3. LA LISTA DE NODOS INDICE Se encuentra a continuación del super bloque. Esta lista tiene una entrada (denominada inode) por cada archivo del sistema de archivos donde se guarda la descripción del mismo. Durante el arranque del sistema, el núcleo lee la lista de inodes del disco y carga una copia en memoria conocida como tabla de inodes. Los inodes contienen toda la información acerca del archivo que representan. Esta información incluye propietario, derechos de acceso, tamaño, localización en el sistema de archivos, etc. A continuación se muestran aquellos campos componentes de un inode más relevantes: □
Identificador del propietario del archivo y del grupo al que pertenece.
□
Tipo de archivo.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 17 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
Derechos de acceso. Se reservan nueve bits para representar los derechos de lectura, escritura y ejecución (rwx) para el propietario, el grupo y el resto, y otros tres bits para definir si están o no activas las banderas setuid, setgid y sticky bit.
□
Fecha de la última modificación.
□
Contador de enlaces (links).
□
Tamaño del archivo.
□
Entradas para los bloques de dirección. Las entradas que apuntan a los bloques de datos son 13. Los 10 primeros punteros apuntan a bloques directos; así, los datos de archivos pequeños (a lo sumo 10 bloques de disco) pueden ser referenciados inmediatamente, puesto que mientras el archivo esta abierto se mantiene una copia de su inode en memoria principal. Los tres apuntadores siguientes apuntan a bloques indirectos.
El primero de ellos es un puntero indirecto simple,
El segundo un puntero indirecto doble
El tercero es un puntero indirecto triple.
La estructura comentada aparece representada en la siguiente Figura 2.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 18 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968 Tabla de inode
bloques de datos
bloques de datos
SIMPLE DOBLE TRIPLE
bloques de datos
bloques de datos
bloques de datos
Figura 2. Estructura Tabla de Inodes
4.5.4. BLOQUES DE DATOS Comienzan a continuación de la lista de nodos índice y ocupan el resto del sistema archivos. En los bloques de datos se almacena el contenido de los archivos referenciados por un inode.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 19 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
4.5.5. CREACIÓN DE UN SISTEMA DE ARCHIVOS Para crear un sistema de archivos se utiliza la orden mkfs cuya sintaxis es la siguiente mkfs [-vct] dispositivo tamaño. Donde □
Dispositivo es el archivo de dispositivo utilizado para acceder al periférico
□
Tamaño indica el número de bloques que tiene el sistema de archivos
□
Las opciones vct significan à
v modo verboso.
à
c indica que se realice una comprobación con objeto de verificar que todos los bloques son correctos.
à
t sirve para indicar el tipo de sistema de archivos que desamos crear.
Una vez creado el sistema de ficheros, hay que incorporarlo a la estructura jerárquica de Unix, lo que habitualmente se denomina montar un sistema. Para ello, utilizaremos la orden mount. Hay que montar los sistemas de archivos en directorios que tienen que estar vacios y a ese directorio se le llama punto de montaje La sintaxis básica es la siguiente: mount –tahvrw dispositivo directorio à
t indica el tipo de sistema de archivos que montamos
à
a monta todos los sistemas de archivos incluidos en el fichero /etc/fstab
à
h ayuda
à
v modo verboso
à
r monta el sistema de archivos en modo lectura
à
w monta el sistema de archivos en modo lectura-escritura.
Una vez que se acaba de trabajar con un sistema de archivo previamente montado hay que desasociarlo de la estructura jerarquica, a esto se le llama desmontarlo y para ello se utiliza la orden umount, que recibe como parámetro bien el directorio a desmontar o bien el dispositivo asociado a ese directorio
4.6.
ESTRUCTURA EXTERNA DEL SISTEMA DE ARCHIVOS
La estructura externa del sistema de archivos de Unix es jerárquica en forma de árbol invertido. Al directorio raíz se le denomina con el símbolo “/” y dentro de el puede haber tantos archivos como directorios se quiera. Se puede observar que de esta forma se da una relación padre-hijo, al igual que en cualquier árbol genealógico. Todos los directorios tienen dos entradas especiales que son: □
El punto . denota al propio directorio
□
El punto punto .. que denota al directoro padre
Al conectarnos al sistema UNIX, nos colocamos en un directorio especial denominado directorio de recepcion o de partida, este directorio no se debe de confundir con el directorio donde se trabaja en un momento dado, al cual se le llama directorio de trabajo. En esta estructura, todo archivo o directorio se define por una ruta, por lo tanto la ruta no es mas que la forma de localizar un archivo o directorio en el sistema de archivos. Existen dos tipos de rutas:
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 20 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
Rutas absolutas: son aquellas que siempre parten del directorio raiz
□
Rutas relativas: son aquellas que parten del directorio de trabajo.
4.6.1. DIRECTORIOS Y ARCHIVOS ESTÁNDAR En los sistemas operativos tipo UNIX existen una serie de archivos y directorios estándar. Los directorios estándar contienen archivos concretos. □
Directorio raíz ( / ) es el origen de la jerarquía del sistema de archivos. Contiene algunos archivos y directorios estándar.
□
/bin es el directorio donde se encuentran los ejecutables de la mayoría de las órdenes de UNIX, entre las cuales se cuentan cat, chmod, cp, csh., date, echo, kill, ksh, In, Is, mail, mkdir, more, mv, ping, ps, pwd, rm, rmdir, sh, stty, tar, vi, y zcat. Todos los archivos de este directorio son archivos ejecutables, o bien vínculos simbólicos que llevan a archivos ejecutables ubicados en otros directorios
□
/dev Es el directorio de dispositivos, y contiene archivos que corresponden a los dispositivos del sistema (terminales, unidades de disco, lector de CD-ROM, impresora, etc.) Entre los archivos de este directorio están:
□
à
cdrom: el lector CD-ROM
à
fd: la unidad de disquete
à
hd: dispositivo IDE
à
sd: dispositivo SCSI
à
isdn: RDSI
à
Ip: impresora
à
tty terminal.
/etc El directorio /etc, contiene archivos para la administración y configuración del sistema, estando restringidos su utilización a los usuarios. Entre los archivos residentes en este directorio están à
inetdconf
à
passwd
à
printcap
à
profile
à
services
à
shadown
□
/lib contiene las imágenes de las librerías compartidas. Estos ficheros contienen código que compartirán muchos programas. En lugar de que cada programa contenga una copia propia de las rutinas compartidas, estas son guardadas en un lugar común, en /lib. Esto hace que los programas ejecutables sean menores y reduce el espacio usado en disco
□
/lost+found contiene todos los archivos que no están relacionados con ningún directorio. Estos archivos se buscan mediante una herramienta de UNIX, fsck (chequeo del sistema de archivos), que se emplea para comprobar sistemas de archivos.
□
/tmp Usado por distintas órdenes y aplicaciones, el directorio /tmp contiene archivos temporales. Todos los archivos de este directorio se borran periódicamente, para que el disco no se llene de archivos temporales. La duración de los archivos residentes en el directorio /tmp será establecida por el administrador del sistema
□
/users Dotado de un cierto tipo de organización, el directorio /users se utiliza normalmente para almacenar los directorios iniciales de todos los usuarios del sistema.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 21 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
□
/usr Contiene Contienen una serie de subdirectorios que contienen a su vez algunos de los más importantes y útiles programas y ficheros de configuración usados en el sistema. Algunos de estos subdirectorios son: à
/usr/X386 contiene el sistema X Window. El sistema X Window es un entorno gráfico grande y potente el cual proporciona un gran número de utilidades y programas gráficos, mostrados en "ventanas" en su pantalla. El directorio /usr/X386 contiene todos los ejecutables de X Window, ficheros de configuración y de soporte.
à
/usr/bin es el almacén real de programas del sistema UNIX. Contiene la mayoría de los programas que no se encuentran en otras partes como /bin.
à
/usr/etc Como /etc contiene diferentes ficheros de configuración y programas del sistema, /usr/etc contiene incluso más que el anterior. En general, los ficheros que se encuentran en /usr/etc/ no son esenciales para el sistema, a diferencia de los que se encuentran en /etc, que si lo son.
à
/usr/include contiene los ficheros de cabacera para el compilador de C. Estos ficheros (la mayoría de los cuales terminan en .h, de "header") declaran estructuras de datos, subrutinas y constantes usados en la escritura de programas en C. Los ficheros que se encuentran en /usr/include/sys son generalmente usados en la programación de UNIX a nivel de sistema.
à
/usr/g++-include contiene ficheros de cabecera para el compilador de C++ (muy parecido a /usr/include).
à
/usr/lib contiene las librerías equivalentes "stub" y "static" a los ficheros encontrados en /lib. Al compilar un programa, este es "enlazado" con las librerías que se encuentran en /usr/lib, las cuales dirigen al programa a buscar en /lib cuando necesita el código de la librería. Además, varios programas guardan ficheros de configuración en /usr/lib.
à
/usr/local es muy parecido a /usr contiene programas y ficheros no esenciales para el sistema, pero que hacen el sistema más divertido y excitante. En general, los programas que se encuentran en /usr/local son específicos de su sistema, esto es, el directorio /usr/local difiere bastante entre sistemas UNIX.
à
/usr/man Este directorio contiene las páginas de manual. Hay dos subdirectorios para cada página "sección" de las páginas (use la orden man man para más detalles). Por ejemplo, /usr/man/man1 contiene los fuentes (es decir, los originales por formatear) de las páginas de manual de la sección 1, y /usr/man/cat1 las páginas ya formateadas de la sección 1.
/var contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de estos directorios solian residir en /usr, pero los directorios que cambian a menudo han sido llevados a /var. Algunos de estos directorios son: à
/var/adm contiene varios ficheros de interés para el administrador del sistema, especificamente históricos del sistema, los cuales recogen errores o problemas con el sistema. Otros ficheros guardan las sesiones de presentación en el sistema, así como los intentos fallidos.
à
/var/spool contiene ficheros van a ser pasados a otro programa. Por ejemplo, el correo de llegada será almacenado en /var/spool/mail hasta que lo lea o lo borre. Artículos nuevos de las news se encuentran en /var/spool/news, etc.
□
/unix contiene la imagen binaria del núcleo de UNIX que se carga al arrancar el sistema. El UNIX BSD tiene la imagen en /vmunix.
□
/etc/passwd Es un fichero que contiene la información anterior acerca de los usuarios. Cada línea del fichero contiene información acerca de un único usuario; el formato de línea es: nombre:clave encriptada:UID:GID:info_usuario:dir_inicio:shell à
nombre: es el login del usuario que introduce para conectarse.
à
clave: contiene la contraseña encriptada en los sistemas antiguos de UNIX; actualmente la clave encriptada aparece en /etc/shadow, con lo que este campo del fichero /etc/passwd aparece en blanco.
à
UID: numero asignado al usuario; su rango está entre 0 y 65535, estando reservado el 0 al root y del 1 al 99.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 22 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
à
GID: numero asignado al grupo al que pertenece el usuario; su rango está entre 0 y 65535, estando reservado del 0 al 99.
à
Info_usuario: contiene información relativa al usuario: nombre, telefono, etc.
à
Dir_inicio: contiene la ruta absoluta del directorio de recepción del usuario.
à
Shell: contiene la ruta absoluta del shell de conexión.
4.7. OPERACIONES CON ARCHIVOS Y DIRECTORIOS Cambio de directorios. Se puede mover entre directorios utilizando la orden cd (change directory), con una ruta absoluta o relativa. Si se emite la orden cd sin ningún camino, se moverá al directorio de recepción Creación de un directorio. Se puede crear nuevos directorios en el sistema de archivos con la orden mkdir (make directory). Movimiento y renombrado de archivos. Un archivo se mueve desde un directorio hasta otro con mv. Movimiento de directorios. Otra nueva característica de la Versión 4 es la posibilidad de utilizar mv para mover directorios. Una única orden mv se puede utilizar para mover un directorio y todos sus archivos y subdirectorios, de la misma forma que se mueve un único archivo Copia de archivos. Un motivo corriente para copiar un archivo es la seguridad, de manera que uno pueda modificar un archivo sin preocuparse de la pérdida del original. La orden cp es similar a mv, excepto que copia archivos en lugar de moverlos o renombrarlos. Copia del contenido de un directorio. Una característica nueva de cp en la Versión 4 es la opción -r (recursive), que permite copiar una estructura de directorio completa en otro directorio. Eliminación de archivos. Para suprimir archivos que no se quieren o no se necesitan más se utiliza la orden rm (remove). La orden rm acepta varios argumentos y toma varias opciones. □
Si se especifica más de un nombre de árchivo, elimina todos los archivos nombrados.
□
Si quiere evitar la eliminación accidental de archivos, puede utilizar rm con la opción -i (interactive).
Eliminación de un directorio. Existen dos formas para eliminar o borrar un directorio. □
Si el directorio está vacío (no contiene ni archivos ni subdirectorios), puede utilizar la orden rmdir (remove directory).
□
Si el directorio no esta vacío se utiliza la orden rm –r
Vinculación de archivos. La orden ln crea vínculos entre entradas de directorio, Vínculos simbólicos. La orden In puede vincular archivos dentro de un único sistema de archivos. En la Versión 4 se pueden vincular archivos entre sistemas de archivos utilizando la opción -s (symbolic) con In. Visualización de archivos y directorios Para ver los archivos de un directorio, se introduce la orden ls (list): UNIX mantiene infomlación complementaria de los archivos, que se puede obtener utilizando las opciones de la orden ls. Existen muchas opciones con la orden ls. Se utilizan para obtener infomlación complementaria de los archivos y para controlar el formato de visualización de esta infomlación. Los archivos con nombres que comienzan con un punto están ocultos en el sentido de que nomlalmente no se visualizan cuando se listan los archivos de un directorio. Para evitar confusión, ls supone que no se quieren listar
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 23 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
estos ficheros a menos que explícitamente se solicite. Es decir, ls no visualiza ningún nombre de archivo que comience con un . (punto). Para ver todos los archivos de un directorio, incluidos los ocultos utilice ls -a. Cuando se utiliza la orden ls no se sabe si un nombre hace referencia aun archivo ordinario, a un programa ejecutable o a un directorio. Si se ejecuta la orden ls -F, produce una lista donde los nombres se marcan con símbolos que indican la clase de archivo a que cada nombre hace referencia: □
Archivos ejecutables: se listan con * seguidos por sus nombres.
□
Directorios se listan con / seguidos de sus nombres.
□
Vínculos simbólicos se listan con @ seguidos por sus nombres.
□
Los archivos ocultos no se listan.
Por defecto, ls en la Versión 4 visualiza los archivos en columnas múltiples, en orden descendente. Existen algunas opciones frecuentemente utilizadas con la orden ls que controlan el fomlato utilizado para visualizar los nombres de archivos. Se puede utilizar la opción -x para visualizar los nombres de los archivos horizontalmente, en tantas líneas como sea necesario, en orden ASCll. Se puede utilizar la opción -1 (uno) para hacer que los archivos se visualicen una línea por fila, en orden alfabético. Para obtener información más detallada sobre los archivos, se utiliza la opción -l (longformat) de ls. Por ejemplo,: $ ls -1 tota128 drwxr-xr-x 3 lrwxr-xr-x 2 -rwxr-xr-x 1
you group1 362 Nov 29 02:34 ficher1 you group1 666 Apr 1 21:17 ficher2 you group1 82 Feb 2 08:08 ficher3
La primera línea ("total 28") de la salida da la cantidad en bloques de espacio de disco utilizado El resto de las líneas del listado muestran información sobre cada uno de los archivos del directorio. Cada línea del listado contiene siete campos. El primer carácter de cada línea informa de la clase de archivo que es: □ – Archivo ordinario □
d Directorio
□
b Archivo de bloques especiales
□
c Archivo de caracteres
□
l Vinculación simbólica
□
p Archivo especial de cauce nombrado
El resto del primer campo, es decir, los nueve siguientes caracteres, contienen información sobre las autorizaciones de los archivos. Las autorizaciones determinan quién puede operar con un archivo o un directorio y cómo puede utilizarlo. Las autorizaciones son una parte importante del sistema de archivos de UNIX. El segundo campo de la izquierda contiene la cuenta de vinculación
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 24 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Los campos tercero y cuarto de la izquierda muestran el propietario del archivo (en este caso los archivos pertenecen al nombre you y el grupo al que pertenece group1). El quinto campo refleja el tamaño en bytes. El sexto campo indica la fecha en la que se creó o modificó por última vez el archivo. El séptimo campo indica el nombre del archivo. Contenido de un archivo. La forma más simple y más básica de inspeccionar un archivo es con la orden cat. cat (de concatenate) toma cualquier archivo que se le especifica y lo visualiza sobre la pantalla.
5. INTERFACES GRAFICAS. La interfaz grafica de UNIX es el sistema X-Window (ojo no se dice X-Windows), o familiarmente conocido por X. El nacimiento de X deriva del diseño de un entorno de ventanas denominado W para el sistema operativo V en la Universidad de Stanford. Al mismo tiempo en el MIT se trabajaba en el proyecto Atenea, que intentaba conseguir una interfaz gráfica independiente de una plataforma hardware concreta y que fuera capaz de comunicarse en red. Los dos proyectos se juntaron en uno solo, dando lugar a la primera versión de X-Window en el 1986, denominándose esta primera versión X10 IBM, Sun, AT&T, MIT y DEC forman un grupo denominado X Consortium, para promocionar y estandarizar X Window. Este grupo de grandes organizaciones supervisa la creación y lanzamiento de nuevas versiones de X11. La versión actual de X es la X11R6 (X11 Release 6). La mayor parte de los UNIX actuales incorporan el sistema de ventanas X Windows diferenciandose en el gestor de ventanas que utilizan. Para ser más concretos en la definición hay que decir que X está desarrollado bajo el modelo cliente-servidor. □
El software servidor gestiona todo el acceso al hardware, encargandose de controlar los dispositivos que se utilizarán en la interfaz grafica: raton, teclado y pantalla. El servidor X recibe los eventos generados por este hardware y tambien es el encargado de mostrar los gráficos e iconos en el monitor. Mas explícitamente, las tareas del servidor son:
□
à
Manipulación a bajo nivel de ventanas (operaciones de creación y destrucción de las mismas), sin confundirlo con el manejo que posteriormente podemos hacer mediante el gestor escogido.
à
Servir como gestor de recursos del sistema para las aplicaciones a ejecutar.
à
Procesar órdenes para el dibujo de gráficos.
à
Notificar a las aplicaciones los eventos ocurridos (pulsado de una tecla, movimiento del ratón, errores...)
à
Monitorizar y comunicar a las aplicaciones los errores que se pueden generar.
à
Control de la pantalla.
à
Comunicación entre los diferentes clientes (cortar y pegar...)
El software cliente son todos los programas que utilizan el servidor X para interactuar con los usuarios, estableciendo para ello una conexión con el servidor X por la cual le dicen al servidor que es lo que quieren mostrar en la pantalla y el servidor les envia las ordenes del usuario. Ejemplo de clientes son xterm (simula un terminal en una ventana), xman, xview, Mosaic (existe una versión para LINUX), etc.. cada uno de lo que coloquialmente denominamos "programas para X " ó "programas para ejecutar bajo X" (aunque con xterm también podemos ejecutar cualquier otro software que no esté concebido para X).
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 25 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
La comunicación con el servidor se realiza mediante el denominado protocolo X Network que especifica una serie de normas y convenios sobre como se envia la información entre los clientes y los servidores. Gracias a este protocolo X y a la distinción entre clientes y servidores, es posible ejecutar un cliente X en un ordenador remoto. Por encima del programa de implementación del protocolo X Network está una interfaz de bajo nivel, que se encuentra entre el sistema base de red y los programas de más alto nivel. Esta interfaz de bajo nivel se llama Xlib. Los programas de aplicación normalmente utilizan funciones de Xlib en vez de otras funciones de bajo nivel. Por ultimo decir que XFree86 es la implementación del X Window disponible para LINUX (y otras implementaciones del UNIX) en su versión 3.1.2, basada en el servidor X386 desarrollado por el MIT destinado a plataformas de Intel 386/486 y Pentium además de la configuración hardware común a este tipo de procesadores. Para conocer más detalles del software instalado podemos ejecutar el comando 'xdpyinfo' en una ventana de terminal el cual nos mostrará información detallada sobre la versión y características del entorno gráfico. XFree86 está distribuido bajo una licencia que permite disponer libremente tanto de software que lo forma en forma de código fuente como en formato binario. Está desarrollado, mantenido y distribuido por grupo XFree86 Project Inc., cuyo fin es el desarrollar el servidor X Window para cualquier UNIX ejecutable en plataformas PC (http://www.xfree.org).
5.1.
GESTOR DE VENTANAS
Un gestor de ventanas no es mas que un programa cliente que se encarga de aportar a todas las ventanas un aspecto común en base a bordes de ventana, estilo de los botones, barras de desplazamiento, barra de titulo, etc. Las distribuciones de UNIX (al igual que las de Linux) traen consigo diversos gestores de ventanas dandole la oportunidad al usuario que escoga el que más le gusta o el que se acople mejor a su máquina, etc. Algunas de sus tareas son: □
Permitir redimensionar las ventanas.
□
Mover las ventanas a cualquier posición de la pantalla.
□
Convertir una ventana en un icono y viceversa.
□
Decorar ventanas con barras de títulos y desplazamiento, bordes, botones, etc.
□
Control de todas las ventanas abiertas en un determinado momento.
□
Lanzamiento de aplicaciones.
Gestores de ventanas son los famosos GNOME y KDE para Linux, CDE para Solaris, fwdm para Unix, aunque existen muchos más disponibles en internet
6.
IMPLEMENTACIONES COMERCIALES Y SOFTWARE LIBRE
Las compañías que distribuyen el sistema operativo UNIX, al portarlo a sus propias máquinas, también le dan un nombre propio. A continuación y en forma de tabla se muestra una lista de alguna de las compañías que distribuyen UNIX en sus equipos.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 26 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
Nombre empresa AT&T AT&T Sun Microsystems/SunSoft Sun Microsystems/SunSoft Hewlet Packard (HP) Data General Novell Santa Curz Operation (SCO) Santa Curz Operation (SCO) Santa Curz Operation (SCO) IBM Silicon Graphics (SGI) Digital Equipment Corp (DEC) Digital Equipment Corp (DEC) NCR Siemens Nixdorf Caldera RedHat Software
Nombre sistema operativo UNIX UNIX SVR3 UNIX SVR4 SunOS Interactive UNIX HP-UX DG-UX UnixWare UnixWare XENIX OpenServer AIX IRIX ULTRIX Digital UNIX NCR UNIX Reliant UNIX Caldera OpenLinux RedHat Linux
Otras compañías no tienen una vocación tan comercial como las anteriores. Ejemplos de estas compañias son: Nombre empresa UC Berkeley FreBSD Project Free Software Foundation Linux Trovalds Debian
Nombre sistema operativo UNIX BSD (Berkeley Software Distribution) FreeBSD GNU/Linux Linux Kernel Debian GNU/Linux
Hay otras implementaciones de UNIX para el 80386 y 80486. La arquitectura 80386 se presta al diseño de UNIX y buen un número de vendedores han sacado ventaja de este factor. Todas las versiones no comerciales de UNIX soportan básicamente el mismo software, entorno de programación, y características de red. Sin embargo, hay algunas fuertes diferencias entre las versiones comerciales de UNIX. En primer lugar, las versiones no comerciales soportan un rango de hardware diferente de las implementaciones comerciales, es decir, soportan la mayoría de dispositivos hardware conocidos, sin embargo, los vendedores de UNIX comercial por lo general tienen una base de soporte menos amplia, reduciendose a su propio hardware En lo que concierne a estabilidad y robustez, muchos usuarios han comentado que las versiones no comerciales son al menos tan estables como los sistemas UNIX comerciales. El factor más importante a considerar por muchos usuarios es el precio. El software no comercial es gratis, si se tiene acceso a Internet. Si no tiene acceso a Internet, tiene la opción de comprarlo pidiéndolo por correo en disquetes, cinta o CD-ROM. El valor de las implementaciones comerciales de UNIX incluye el precio del software en sí, mas la documentación, el soporte, y relativamente una calidad. Estos factores son muy importantes para grandes instituciones, pero los usuarios de ordenadores personales pueden no necesitar esos beneficios.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 27 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
7.
CONCLUSIÓN
UNIX es uno de los sistemas operativos con más fama en todo el mundo junto con los sistemas operativos de Microsoft, sin embargo, cabe destacar que cuando se habla de UNIX se está haciendo referencia a una implementación concreta de UNIX. Es un sistema que posee una alta capacidad de configuración, proporciona varios interpretes de comandos con una gran disponibilidad de configuración y una gestión del sistema de archivos inmejorable, asociando un sistema de archivos determinado a una porción del árbol jerárquico. De los shells más utilizados en UNIX destaca sobre todo el Bourne Shell (sh), que se encuentra en todas las versiones de UNIX, y el bash (Bourne Again Shell) que incorpora las mejoras que aplicaron en su día el C Shell y el Korn Shell al Bourne Shell, este último utilizado mayoritariamente en LINUX. Es curioso observar como a partir de una versión concreta de UNIX, las diversas compañías que ofrecen su “propio UNIX” conservar una forma estándar de colocar sus ficheros y directorios en la estructura jerárquica de UNIX. El temor a la instalación es lo primero que se le puede achacar al sistema frente a otros como por ejemplo UNIX, sin embargo es agradable decir que las compañías se están dando cuenta de estos detalles y en las ultimas versiones de sus respectivos UNIX se están esforzando en la realización de una instalación gráfica. Por ejemplo las famosas distribuciones de RedHat y SuSe. Que decir tiene la configuración del sistema, que también es complicada por el amplio numero de opciones disponibles para cualquier aplicación (por ejemplo un firewall) y como pasa anteriormente las compañías también se mejoran día a día en este aspecto, solo hay que echarle un vistazo a la ultima versión de SuSe, donde casi toda la configuración del sistema se realiza con asistentes. Los comandos básicos para operar con archivos y directorios son los mismos en todos los interpretes y en todas las versiones de UNIX, variando eso si, ciertos comandos de configuración. Gracias al modelo cliente-servidor del sistema X-Window es posible ejecutar un entorno gráfico en un monitor que no este físicamente conectado al sistema, incluso con separación de miles de kilómetros. Algo parecido se puede hacer tambien ahora con Windows XP y su famosa herramienta de control remoto de escritorio.
8.
BIBLIOGRAFÍA □
James C. Amstrong Jr.: Los secretos de UNIX.
□
M. Catalina Gallego y A. Catalina Gallego: Iniciación y Referencia Unix/Linux
□
Steve Moritsugu: La Biblia de UNIX.
□
Syed M. Sarwar, Robert Koretsky, Syed A. Sarwar: El libro de UNIX.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 28 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
9.
ESQUEMA – RESUMEN
Unix es un sistema operativo totalmente aceptado en el mundo de la informatica y sobre todo como servidor de red, debido a sus características inherentes. Existen sobre todo dos versiones de UNIX principales □
UNIX System V de AT&T
□
BSD de la Universidad de Berkeley
Como características principales a destacar resaltan: □
El sistema está escrito en un lenguaje de alto nivel, haciéndolo fácil de leer, comprender, cambiar, y mover a otras máquinas.
□
Posee una simple interfase de usuario con el poder de dar los servicios que los usuarios quieren.
□
Provee de primitivas que permiten construir programas complejos a través de programas simples.
□
Usa un sistema de archivos jerárquico que permite un mantenimiento fácil y una implementación eficiente.
□
Usa un formato consistente para los archivos, el flujo de bytes, haciendo a los programas de aplicación más fáciles de escribir.
□
Provee una simple y consistente interfase a los dispositivos periféricos.
□
Es un sistema multiusuario y multitarea; cada usuario puede ejecutar varios procesos simultáneamente.
□
Oculta la arquitectura de la máquina al usuario, haciendo fácil de escribir programas que se ejecutan en diferentes implementaciones hardware
En cuanto a los interpretes de comandos en modo texto destacan sobre todo 4: □
Bourne Shell (sh); es el que distribuye AT&T con el UNIX.
□
C Shell (csh), desarrollado en la Universidad de Berkeley basado en el lenguaje C.
□
Korn Shell (ksh), interface escrita por David Korn.
□
BASH (Bourne Again Shelll) que unifica las características del csh y ksh junto con la versión inicial del Bourne Shell (sh)
En todos los shells se pueden realizar las siguientes tareas: □
Los modos de invocar una orden son: à
Teclear el comando y pulsar enter
à
ampersand, &, para ejecutar una orden en el modo subordinado.
à
; para invocar varias ordenes desde una unica linea.
□
Utilizar comodines para los nombres de archivos (*, ? , [ ])
□
Cambiar la salida y la entrada estándar con los operadores de redirección ( >,>>,< y | )
El shell dispone de un mecanismo para definir variables que se utilizan para almacenar información utilizada por los programas del sistema o por el usuario. Algunas de esas variables son. □
HOME contiene el nombre de camino absoluto del directorio de recepción.
□
PATH lista, en orden, los directorios en los que el shell busca para encontrar el programa a ejecutar cuando se teclea una orden.
□
PSl y PS2 definen los signos de sus peticiones de orden primaria y secundaria, respectivamente.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 29 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
□
LOGNAME contiene su nombre de presentación. Lo fija automáticamente el sistema.
□
SHELL contiene el nombre de su programa de shell.
□
TERM contiene información sobre el tipo de terminal que se está utilizando. Esta información es necesaria para permitir a los programas que comparen su salida con las capacidades del terminal y para interpretar su entrada correctamente.
El sistema de archivos de UNIX permite organizar y gestionar la información contenida en el equipo. Aunque muchas de las características del sistema de archivos se inventaron. Las características del sistema de archivos son: □
Para cada archivo se definen 3 tipos de acceso diferentes: lectura, escritura y ejecución.
□
UNIX no impone ninguna restricción a la organización interna de un fichero.
□
UNIX ofrece herramientas para realizar copias de seguridad de ficheros
□
Tratar a los dispositivos de entrada salida como si fuesen archivos.
□
Tiene una estructura jerárquica en forma de árbol invertido.
□
Realizar un tratamiento consistente de los datos de los archivos.
En UNIX existen cinco tipos de archivos: □
Archivos ordinarios: Almacenar información en dispositivos de almacenamiento secundario
□
Directorios: archivo que contiene información sobre las localizaciones y atributos de otros archivos
□
Vinculo: forma de que un archivo tenga dos nombres distintos à
□
□
Vinculo simbolico: Equivale al acceso directo en windows
Archivos de dispositivos: archivo especial que representa un dispositivo fisico à
Archivos de dispositivo en modo carácter. Transfieren datos carácter a carácter.
à
Archivos de dispositivo en modo bloque: Transfieren datos en bloques.
Tuberías (pipes) con nombre: Mecanismo de comunicación para transferencia de datos entre 2 procesos
En la estructura del sistema de archivos de un UNIX versión System V se distinguen cuatro partes: □
El bloque de arranque: contiene el programa busca el sistema operativo y lo carga en memoria para iniciar la máquina.
□
El super bloque. Muestra el estado de un sistema de archivos
□
La lista de nodos índice: tiene una entrada (denominada inode) por cada archivo del sistema de archivos donde se guarda la descripción del mismo.
□
Los bloques de datos. Almacenan el contenido de los archivos referenciados por un inode.
La interfaz gráfica de UNIX es el sistema X-Window basado en el modelo cliente servidor. Conceptos importantes □
El servidor X gestiona todo el acceso al hardware, encargándose de controlar los dispositivos que se utilizarán en la interfaz grafica: ratón, teclado y pantalla. El servidor X recibe los eventos generados por este hardware y también es el encargado de mostrar los gráficos e iconos en el monitor.
□
El software cliente programas que utilizan el servidor X para interactuar con los usuarios
□
Protocolo X: Dicta las normas a seguir para lograr una comunicación cliente servidor.
□
Gestor de ventanas: Ofrece una apariencia común a todas las ventanas.
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 30 de 31
www.haztefuncionario.com
Material registrado. Prohibida su reproducción.
Copia exclusiva de José Ignacio Méndez Yanes. Av de los Poblados 133, 7º - 3ª - 28025 - Madrid - Tel. 917464968
TEMARIO-TICB-feb04 Actualizado en febrero de 2004
B1G2T01 Página 31 de 31