arqcomp p2

9
1 ARQUITECTURA DE COMPUTADORES PRÁCTICA 2 Introducción al Shell del Sistema Operativo UNIX (II) ENTRADA AL SISTEMA. Vamos a trabajar con la distribución RedHat de LNUX en su versión 9.0. Se trata de un entorno gráfico. UNIX es un sistema multiusuario. Cada usuario tiene creada una cuenta propia. Las cuentas de los usuarios son creadas por el superusuario (root), un usuario con privilegios especiales que se encarga de la administración del sistema. En nuestro caso arrancaremos la máquina seleccionando la primera de la opción LINUX. A continuación aparece un menú donde se nos presentan todas las instancias Linux que han sido configuradas en esa máquina. Debemos seleccionar la primera opción (arranque de un Linux genérico en modo usuario). Una vez arrancado el Linux en concreto, todo usuario debe identificarse en el momento de la conexión. Para ello debe introducir, en primer lugar, su identificador de usuario (login) y, a continuación, su contraseña (password). Tanto el identificador de usuario como el password se os indicarán en el momento de realizar la práctica. Hay que introducir el mismo respetando las mayúsculas y minúsculas. Por motivos de seguridad, la contraseña no se visualiza en pantalla al escribirla. Así que hay que poner bastante atención en teclearla correctamente. En nuestro caso y, antes de identificar el usuario, debes seleccionar desde la barra de herramientas (en el inferior de la pantalla) la opción de Sesión para, en el desplegable que aparecerá a continuación, picar en la opción de KDE (tipo de desktop que más nos conviene para nuestras prácticas – por defecto los Linux han sido configurados con GNome). Una vez arrancado el sistema operativo, observa el desktop juega un poco con él (tienes 4 posibles a elegir, puedes cambiar el fondo… un poco como en el S.O. windows pero con más elegancia). Si te fijas, tienes un icono llamado terminal o shell (y si no, lo encontrarás en el grupo de programas denominado Herramientas del Sistema). Se trata del intérprete de comandos que utilizarás para realizar esta práctica y las siguientes. Haz doble click sobre el icono y ejecuta el intérprete. Como ya te has identificado al entrar en el sistema no te va a pedir ni el nombre de usuario ni la contraseña.

Upload: carlos7624

Post on 09-Nov-2015

217 views

Category:

Documents


1 download

DESCRIPTION

czzxzxczxczxc

TRANSCRIPT

  • 1

    ARQUITECTURA DE COMPUTADORES

    PRCTICA 2

    Introduccin al Shell del Sistema

    Operativo UNIX (II)

    ENTRADA AL SISTEMA.

    Vamos a trabajar con la distribucin RedHat de LNUX en su versin 9.0. Se trata de un entorno

    grfico. UNIX es un sistema multiusuario. Cada usuario tiene creada una cuenta propia. Las cuentas de

    los usuarios son creadas por el superusuario (root), un usuario con privilegios especiales que se encarga de la administracin del sistema. En nuestro caso arrancaremos la mquina seleccionando la primera de la opcin LINUX. A continuacin aparece un men donde se nos presentan todas las instancias Linux que han sido configuradas en esa mquina. Debemos seleccionar la primera opcin (arranque de un Linux genrico en modo usuario).

    Una vez arrancado el Linux en concreto, todo usuario debe identificarse en el momento de la conexin. Para ello debe introducir, en primer lugar, su identificador de usuario (login) y, a continuacin, su contrasea (password).

    Tanto el identificador de usuario como el password se os indicarn en el momento de realizar la prctica. Hay que introducir el mismo respetando las maysculas y minsculas. Por motivos de seguridad, la contrasea no se visualiza en pantalla al escribirla. As que hay que poner bastante atencin en teclearla correctamente.

    En nuestro caso y, antes de identificar el usuario, debes seleccionar desde la barra de herramientas (en el inferior de la pantalla) la opcin de Sesin para, en el desplegable que aparecer a continuacin, picar en la opcin de KDE (tipo de desktop que ms nos conviene para nuestras prcticas por defecto los Linux han sido configurados con GNome).

    Una vez arrancado el sistema operativo, observa el desktop juega un poco con l (tienes 4 posibles a elegir, puedes cambiar el fondo un poco como en el S.O. windows pero con ms elegancia).

    Si te fijas, tienes un icono llamado terminal o shell (y si no, lo encontrars en el grupo de programas denominado Herramientas del Sistema). Se trata del intrprete de comandos que utilizars para realizar esta prctica y las siguientes. Haz doble click sobre el icono y ejecuta el intrprete. Como ya te has identificado al entrar en el sistema no te va a pedir ni el nombre de usuario ni la contrasea.

  • 2

    Una vez ubicado en el shell, podemos cambiar el prompt con el comando:

    $ export PS1=$ As el prompt se quedar reducido al smbolo $. Este indicador denota que el intrprete espera una orden del usuario desde el teclado con el fin de que UNIX la ejecute. La orden se ejecuta al pulsar .

    NOTAS GENERALES C: Termina o aborta la ejecucin de un comando. S: Detiene la visualizacin en pantalla. Q: Reanuda la visualizacin en pantalla. En la microweb he dejado un Tutorial UNIX en castellano donde se pueden consultar los comandos

    ms utilizados de UNIX.

    Ojo: UNIX distingue entre maysculas y minsculas. Si se ha tecleado mal, la orden puede corregirse con la tecla de retroceso Al igual que en la prctica anterior, os recomiendo que consultis en el man o en el manual en castellano en los que se especifica el formato de todos los comandos utilizados.

    CREACIN Y BORRADO DE DIRECTORIOS CREACIN DE DIRECTORIOS Para crear un directorio es necesario utilizar la orden mkdir nombre(s) de directorio(s): $ mkdir login_UPVNET_del_alumno Cambiaos a ese directorio (orden cd) Cread un directorio dentro de login_UPVNET_del_alumno que se llame prueba1. Si queremos crear varios directorios a la vez: $mkdir prueba2 prueba3 (Comprobad la creacin de dichos directorios haciendo un listado con ls -l )

    De esta forma hemos nos creado una serie de directorios en el directorio en el que estemos.

    Se pueden crear ficheros vacos mediante la orden touch. Consultad el man para ver cmo y cread algunos.

    Tambin podemos crear subdirectorios utilizando los caminos (paths). Estando en el directorio login_UPVNET_del_alumno que habis creado escribid lo siguiente: $ mkdir prueba1/prueba11 prueba2/prueba21 prueba3/prueba31 Para comprobar todos los niveles de subdirectorios que hemos creado, podemos utilizar la opcin ls R que lista recursivamente ficheros y directorios. BORRADO DE DIRECTORIOS La orden rmdir elimina un directorio. Pero ser necesario que dicho directorio est vaco (que no contenga ningn archivo). Haced: $ rmdir prueba1/prueba11 Comprobad con ls lo que ha pasado.

  • 3

    COPIA, MOVIMIENTO Y RENOMBRADO DE FICHEROS. COPIA DE FICHEROS (ORDEN CP) Si queremos copiar un fichero utilizaremos la orden cp. El primer argumento de la orden es el fichero origen y el segundo el destino. El fichero destino es fsicamente diferente del origen. Ejemplo: $ cp /usr/pub/termcap ejemplo Esto copia el fichero /usr/pub/termcap a nuestro directorio y con el nombre ejemplo. Esto es equivalente a utilizar la orden:

    $ cp /usr/pub/termcap ./ejemplo ( recordemos que . es nuestro directorio actual). Tambin podemos efectuar la copia a un directorio concreto: $ cp /usr/pub/termcap prueba3 introduce el fichero en el directorio prueba3 (si estamos en el directorio superior). La orden cp tambin copia directorios. Lgicamente querremos copiar tanto un directorio como su contenido. Para esto utilizamos el modificador recursivo R. $ cp R prueba3 prueba4 MOVIMIENTO DE FICHEROS (ORDEN MV) El cometido de la orden mv es mover ficheros entre diferentes directorios. Si se usa sobre el mismo directorio, el efecto obtenido consiste en cambiar el nombre al fichero.

    Ejemplos: $ mv ejemplo ejemplo2 cambia el nombre del fichero ejemplo a ejemplo2 . Mientras que... $ mv ejemplo2 prueba4 coloca el fichero ejemplo2 en el directorio prueba4 (si existe este directorio y "cuelga" del actual). Si el fichero destino al que copiamos o movemos ya existe y no tiene permisos de escritura entonces el sistema nos pide confirmacin. Los permisos del fichero copiado o movido son los mismos que los del fichero original. Estudiaremos los permisos ms adelante en esta prctica.

    BORRADO DE FICHEROS (ORDEN RM) La orden rm suprime un fichero de un directorio: $ rm ejemplo2

    OPCIONES Vale la pena resaltar algunas de las opciones que admiten la orden rm: -i : Opcin interactiva. Solicita la confirmacin del usuario antes de proceder al borrado. -r : Opcin recursiva. Borra recursivamente los ficheros que le digamos de todos los

    directorios y subdirectorios del nivel que estamos y de los niveles inferiores. OJO! Esta orden es muy peligrosa. UNIX no tiene el comando UNDELETE.

  • 4

    PROPIEDAD Y PROTECCIN (CHMOD, UMASK) Puesto que el sistema operativo UNIX es de tipo multiusuario, hemos de manejar los conceptos de propiedad y proteccin, es decir, a quin pertenece un determinado fichero respectivamente.

    Ejemplo: Creemos un fichero de la siguiente forma: $ ls l > hola Esta orden utiliza el concepto de la redireccin (que trataremos ms adelante). Si mostramos el contenido de este fichero podremos observar que contiene un listado del directorio en el que nos encontramos: $ more hola Podemos observar que el propietario de este fichero es arq, que pertenece al grupo arq, y que sus bits de acceso estn de la siguiente forma: rw-r--r-- . Qu indica esto? Para cada fichero del sistema hay tres clases de usuarios que pueden tener acceso en los siguientes modos:

    Propietario: Todos los ficheros creados en Unix tienen su propietario. Habitualmente la persona que lo cre. El propietario de un fichero puede asignarle diversos privilegios de acceso. Para cambiar a un fichero de propietario se utiliza la orden chown (que habitualmente slo usa el administrador del sistema).

    Grupo: Varios usuarios que pueden tener alguna caracterstica comn (p. Ej. Trabajar en un mismo proyecto).

    Pblico: El resto de usuarios del sistema (exceptuando al propietario y al grupo) Todos los ficheros del sistema tienen tres tipos de permisos que describen qu tipo de

    operaciones se pueden efectuar con ese fichero: lectura (r) , escritura (w) y ejecucin(x). Por tanto, para cada uno de los posibles modos de usuario comentados anteriormente

    (propietario, grupo y pblico) hay tres tipos de privilegio posibles (lectura, escritura y ejecucin). Esto nos da un total de nueve modos posibles que normalmente se escriben como: rwxrwxrwx. Si, por ejemplo, un fichero tiene los privilegios rw-r----- , querr decir que el propietario tiene permiso para leer y escribir, el grupo tiene permiso para leer y el resto no tiene permiso para nada.

    Para poder cambiar estos permisos hemos de ser los propietarios del fichero (o administradores del sistema) y utilizar la orden chmod. La sintaxis es:

    chmod modo_proteccin fichero(s). Para especificar el modo existen diversas formas. Vamos a utilizar en primer lugar la ms

    conocida y que se basa en la representacin binaria. Se trata de representar cada uno de los 9 permisos mediante unos o ceros en funcin de si un permiso est activado o no.

    Ejemplos:

    rw-r----- significa 110 100 000, que en modo octal sera 640. Supongamos que nosotros somos los nicos que deseamos leer y escribir sobre nuestro fichero y que el resto de usuarios slo puedan leerlo. Los permisos quedaran como:

    rw-r-r--. Es decir, 110 100 100 que en modo octal sera 644. Para cambiar los permisos del fichero habra que escribir lo siguiente:

    $ chmod 644 hola (comprobar que se han cambiado los permisos)

  • 5

    Si deseamos proteger un directorio determinado, nos colocaremos en el nivel superior del directorio que queremos proteger y ejecutaremos la orden chmod con los privilegios que deseamos. Haced una prueba y confirmad los cambios (haz chmod a 777 o a 700).

    Existe otra forma de referenciar los permisos. Es mediante el llamado modo "simblico". Es algo ms complejo que el anterior. Para ello se emplean los caracteres r, w, x, u, g, o, a, =, +, y -. Consultad en el manual cmo se emplean y probadlo.

    Existen dos modos de proteccin especiales, que slo pueden ser utilizados por el superusuario, y que tienen relacin con que un fichero sea accesible a un determinado programa o que el sistema trate de forma especial un fichero de tipo ejecutable. En este caso suelen aparecer en el permiso de ejecucin (x) las letras s t.

    PERMISOS INICIALES Cuando se crea un fichero o un directorio se le asignan unos permisos por defecto. Estos permisos pueden ser cambiados por la orden umask. Esta orden sirve para especificar aquellos permisos que van a denegarse en los ficheros de nueva creacin.

    El clculo de umask se efecta de la siguiente forma: 666 (valor de referencia)

    -644 (valor requerido)

    ----------------------------------------------------

    022 (valor de umask) Esta orden slo tendr valor durante la sesin actual.

    Si introducimos umask sin argumentos, nos devuelve el valor actual. Cread un fichero con la orden touch que se cree con permisos de lectura y escritura slo

    para el propietario y sin permiso de ejecucin para nadie. Para ello tendris que ejecutar antes la orden umask correspondiente. Comprobad con la orden ls -l que los permisos con los que se ha creado son los indicados.

    Devolved a umask el valor que tena (022).

    REDIRECCIN DE E/S Cuando se ejecuta un programa en UNIX, ste usualmente espera una entrada de datos y

    normalmente produce alguna salida de resultados. En un modo de trabajo interactivo, el usuario espera interaccionar con el sistema usando los dispositivos que se inventaron para tal efecto, los terminales.

    En el modo de operacin de trabajo por lotes, el usuario no interacta con el programa, luego tanto las entradas como las salidas se espera que se realicen sobre ficheros.

    La solucin que UNIX adopta es simple, los dispositivos se tratan como ficheros. Por cada dispositivo conectado al sistema existe un fichero al cual el usuario se refiere cuando desea acceder al dispositivo.

    En UNIX existen tres ficheros estndar que se refieren a la E/S por defecto que usan los programas:

    Entrada estndar: (stdin) Representa al dispositivo del cul un programa espera leer su entrada.

  • 6

    Salida estndar: (stdout) Representa al dispositivo sobre el cul un programa espera escribir su salida.

    Salida de diagnstico: (stderr) Representa al dispositivo sobre el cul un programa escribir los mensajes de error.

    En general, si un programa espera una entrada y no se especifica ningn nombre de fichero, la entrada estndar para este programa se toma como el teclado del terminal del usuario.

    Normalmente, el resultado de la ejecucin de un programa se lanza sobre la salida estndar, que coincide con la pantalla del terminal del usuario. La salida de diagnstico coincide con la salida estndar.

    UNIX ofrece un sistema sencillo para cambiar las asignaciones por defecto de los ficheros stdin, stdout, stderr. Se puede especificar que la salida estndar de un programa sea escrita en un fichero, que los datos de entrada se tomen de un fichero, o que los mensajes de error se almacenen en un fichero. A esto se le llama redireccin de la E/S.

    UNIX tambin permite usar la salida estndar de un proceso como la entrada estndar de otro, tal y como si colocramos una tubera que los uniera. A una secuencia de rdenes enlazadas de este modo, se le llama tubera o tubo (pipeline o pipe). REDIRECCION DE LA SALIDA ESTNDAR Si un nombre de fichero est precedido por el smbolo >, la salida estndar de un programa se redirige hacia el fichero. Haced: $ ls -l > dir.dat Comprobad qu ha pasado, con el comando: $ cat dir.dat Si el fichero especificado no exista antes de la orden, se crea, y si ya exista, se reemplazar su contenido.

    Comprobad, $ ls -l > salida.dat $ cat salida.dat $ date > salida.dat $ cat salida.dat

    Segn esto, podemos usar este mtodo para crear un fichero vaco. As: $ > vacio

    Tambin se pueden crear ficheros con contenido usando la orden cat redirigida. Probad lo siguiente: $ cat > texto cat es una orden til para generar ficheros nuevos. D $ cat texto

  • 7

    Si queremos que la salida de un programa se aada al contenido actual de un fichero, usaremos el smbolo >>. As no machacaremos el contenido del fichero. Por ejemplo: $ ls -l > salida.dat $ date >> salida.dat Visualizad el contenido de salida.dat.

    Si queremos que la salida de un programa se pierda, es decir, no aparezca ni en la pantalla ni se almacene en ningn fichero, podemos usar el dispositivo /dev/null as: $ ls -l > /dev/null REDIRECCIN DE LA ENTRADA ESTNDAR Al igual que se puede redireccionar la salida estndar, se puede hacer lo propio con la entrada estndar. Para ello usaremos el smbolo pero bien usada, puede >servirnos como editor de textos >de emergencia (si no hay otro disponible) >final_archivo $ cat texto.txt

    TUBERAS (PIPES). La potencia de UNIX no se llega a aprovechar al mximo ejecutando los comandos del

    shell y programas del sistema individualmente, sino cuando se combinan. Para ello se pueden utilizar las tuberas y los shell-scripts. Estos ltimos vienen a ser como los ficheros .BAT del MS-DOS y los veremos en prcticas futuras.

  • 8

    Para conectar dos procesos formando una tubera, usaremos el smbolo | . Ejemplo: $ ls -l | wc -l

    Ahora la salida estndar de ls se usa como entrada estndar de wc (wc es un programa que nos permite contar el n de caracteres, palabras y lneas de un fichero de texto). Es intuitivo pensar en que las tuberas nos permiten construir procesos que operen en un flujo de datos. Con el estudio de los filtros de UNIX, esta posibilidad se convierte en un recurso muy apreciado. Se pueden conectar varios procesos en una misma orden: $ ls /home | grep dis | sort -r Qu hace esta serie de rdenes? Podis seguir el proceso ejecutndolas por separado de manera secuencial.

    REDIRECCION DE LA SALIDA DIAGNSTICO De la misma manera que podemos redirigir la salida estndar, es posible almacenar la salida de error en un fichero, usando 2>. Recordad que 0 (entrada estndar), 1 (salida estndar) y 2 (error) son los dispositivos de E/S estndar en UNIX. Probad lo siguiente: $ cat noexisto.dat >sal.dat El shell da un mensaje de error. El fichero sal.dat se ha creado, pero qu contiene? Visualizad su contenido.

    Si no se quiere que aparezcan los mensajes de error en la pantalla, pero s se quiere tener constancia de ellos, se pueden redireccionar a un archivo para luego examinarlo. Probad: $ cat noexisto.dat > sal.dat 2> err.dat $ cat err.dat

    Como se puede suponer, UNIX se refiere a los dispositivos de salida usando los nmeros correspondientes delante de cada smbolo >. Si no se especifica ningn smbolo delante de >, UNIX toma 1 por omisin. Comprobad que la ejecucin de la siguiente orden es equivalente a la anterior: $ cat noexisto.dat 1> sal.dat 2>err.dat Si se quiere lanzar la salida de error hacia el mismo fichero que se lanza la salida estndar, se usa la nomenclatura 2>&1. Tambin se puede usar 1>&2 para aadir la salida estndar a la salida de error.

    Veamos un ejemplo con la orden time. sta ejecuta una orden que se le pasa como parmetro y presenta en la salida de error una contabilidad de tiempos sobre su ejecucin. $ time wc -l /etc/passwd $ time wc -l /etc/passwd > num_users $ cat num_users $ time wc -l /etc/passwd > num_users 2>&1 $ cat num_users

    FIN DE LA PRCTICA 2

  • 9

    CUESTIONARIO DE AUTOEVALUACIN

    Cambia el prompt por uno con tu nombre y una flecha (PepitoPalotes ---> ). Cul es el nombre de la variable utilizada para almacenar el prompt?

    Muestra el comando y la opcin a teclear para que, a partir de este momento, todos los ficheros creados tengan los permisos por defecto: rw-r-----.

    Utiliza el comando 'cat' como procesador de texto para generar el fichero 'texto1.txt' de tal forma que puedas salir del procesador tecleando la cadena de caracteres 'FIN'

    A partir de la orden 'cat', genera un fichero nuevo llamado 'texto2.txt' donde se redireccione el contenido del fichero pasado como entrada y, adems, se redireccione tambin la salida de error estndar. Pasa como entrada los siguientes ficheros: 'texto1.txt'. Qu aparece en el fichero de salida? 'nada.txt'. Qu aparece en el fichero de salida?