siguiente arriba anterior
Siguiente: Sobre este documento... Arriba: raiz Anterior: Resumen del mandatos de

Exámenes propuestos

En este apéndice se incluyen algunos exámenes anteriores hasta el curso 1999-2000.

  1. En un sistema UNIX se encuentran en el directorio tmp que cuelga de HOME una serie de veinte ficheros de texto cuyos nombres van desde datos.00.txt hasta datos.19.txt.

    Combinar todos estos ficheros en uno único cuyo nombre sea datos.txt siguiendo el orden numérico creciente. El fichero resultante del apartado anterior (datos.txt) es un fichero excesivamente voluminoso, y no resulta razonable conservarle tal cual. Por esto se le quiere comprimir, y para ello hay en el directorio bin que cuelga del HOME (no accesible por la variable PATH) un fichero ejecutable llamado comprimir que toma la entrada estándar, la comprime y proporciona por la salida estándar el contenido comprimido. Usando esta utilidad de compresión, comprimir el fichero datos.txt y generar un fichero llamado datos.txt.Z. El fichero datos.txt.Z contiene información «sensible» que no conviene que sea accesible por ningún usuario excepto para el propietario (que tendrá control total) y para los demás miembros de su grupo (que sólo podrán ver su contenido). Por esta razón ha de moverse el fichero original a un subdirectorio oculto (el nombre que se le dé es arbitrario) que cuelgue del HOME, y han de cambiarse adecuadamente los permisos del fichero y del subdirectorio. También han de borrarse todos los ficheros de datos originales.

  2. El usuario pepe estaba trabajando en el sistema, pero debido a que ejecutó un comando de manera incorrecta se quedó «colgada» dicha sesión. El usuario pepe volvió a entrar y mediante un comando obtuvo entre otras las siguientes líneas:

    F X UID      PID  PPID C PRI NI   ADDR SZ  WCHAN STIME    TTY   TIME CMD
    3 S root       0     0 0 128 20 28df28  0        Jan 1    ?     0:13 swap
    1 S root       1     0 0 168 20 604a80 41 7ffe60 Sep 1    ?     0:00 init
    1 S javi    7756  7701 0 156 20 777440 18 2dd450 11:16:37 ttyq2 0:00 cat
    1 S daemon   144     1 0 154 20 741400 67 74b122 Sep 1    ?     0:00 mail
    1 S teresa  2668  2667 0 158 20 750700 45 455dc0 09:34:57 ttyp6 0:00 -sh
    1 S pepe    9290  7727 1 154 20 7c4cc0 10 796486 11:17:38 ttypa 0:00 more
    1 S pepe    7727  7726 1 158 20 784cc0 55 45b3c0 11:15:58 ttypa 0:00 -sh
    1 S pepe    9208  7727 1 154 20 7d3740 27 7bd686 11:17:38 ttypa 0:00 grep
    1 S pepe    7681  7680 1 158 20 7c4040 55 45c7c0 11:15:19 ttypd 0:00 -sh
    1 S pepe    7721  7681 1 154 20 777540 10 294390 11:15:44 ttypd 0:00 mio
    

    ¿Qué comando permite obtener esta información (incluir las opciones oportunas)? ¿Qué línea de comandos escribirías para eliminar la sesión que se nos quedó colgada?

    En el directorio en el nos encontramos existen varios ficheros que contienen en algún lugar de su nombre la subcadena log. Copiarlos a un directorio que cuelga de nuestro HOME llamado tmp.

    En el directorio bin (no accesible por la variable PATH) que cuelga del HOME está el fichero a.out. Se trata de un fichero ejecutable, que al ser invocado pasándole como argumento un fichero llamado fich1.txt situado en el directorio padre del actual, produce unas determinadas informaciones de salida. Añadir dicha salida a los contenidos existentes en fichero salida.log situado en tmp que cuelga del HOME. De producirse algún error en la ejecución, depositar los mensajes que lo anuncien en el fichero errores.log situado en tmp que el hijo del HOME.

  3. Puede considerarse que en una máquina UNIX el sistema de correo (mail) funciona como sigue: Colgando del directorio raíz hay un directorio llamado buzon en el que se encuentran los ficheros que contienen los mensajes recibidos para cada usuario (uno para cada usuario), siendo el nombre de cada fichero igual al nombre del usuario propietario. Supongamos para facilitar las cosas, que todos los usuarios pueden leer/escribir en todos los ficheros que hay en el directorio buzon.

    Sabiendo que cada usuario tiene una variable de entorno llamada LOGNAME que contiene su nombre de usuario, y suponiendo que no se dispone de ningún comando específico para trabajar con el correo (¡no existe el comando mail!), indicar los comandos UNIX que un usuario teclearía para la realización de las siguientes tareas:

  4. Realizar los apartados siguientes suponiendo que estamos en un lugar desconocido de la estructura de directorios de una máquina UNIX y NO NOS MOVEMOS DE ALLÍ.

    En un directorio llamado voz, hijo del directorio raíz, se encuentran una serie de ficheros de sonido, que se caracterizan porque sus nombres acaban en «.au».

    1. Crear en el directorio HOME un directorio llamado aislados.
    2. Copiar en el directorio creado en el apartado anterior, todos los ficheros de sonido del directorio voz.
    3. En el directorio aplicaciones, que es hijo del directorio padre del actual, existe un aplicación llamada makepree que filtra ficheros de sonido. Esta aplicación recibe un único argumento, que ha de ser el nombre del fichero o de los ficheros (admite caracteres comodín o metacaracteres) de sonido a filtrar. Por cada fichero de sonido que procesa, makepree muestra por la salida estandar un mensaje indicándolo; el mensaje contiene el nombre del fichero que se está procesando. Filtrar todos los ficheros de voz copiados en el apartado 2, sabiendo que el directorio aplicaciones NO ESTÁ INCLUIDO EN LA VARIABLE PATH, y guardando los mensajes de salida de la aplicación en un fichero llamado filtrados, que ubicaremos en el directorio actual.
    4. Repetir el apartado anterior, pero ahora sin que la ejecución de makepree suponga el bloqueo del terminal.
    5. A partir de la información guardada en el fichero filtrados, creado en el apartado dos puntos más atrás, indicar el número de ficheros de sonido, cuyo nombre contenga la cadena «hablante1», que han sido filtrados.

  5. Realizar los apartados siguientes suponiendo que estamos en un lugar desconocido de la estructura de directorios de una máquina UNIX y que NO NOS MOVEMOS DE ALLÍ.

    NOTA: No se permite utilizar el ';' (punto y coma) para separar órdenes en una misma línea.

    En un directorio llamado tmp que cuelga del raíz se encuentran una serie de ficheros cuyas extensiones son .doc y .exe

    1. Crear con una sola línea de comandos dos directorios que cuelguen del HOME llamados documentos y programas.
    2. Mover los ficheros cuya extensión sea .doc a documentos y los que acaben en .exe a programas.
    3. Crear un fichero llamado busqueda.tmp en el padre del actual, que contenga todas las líneas de los ficheros .doc donde aparezca la palabra «Z80» ordenadas alfabéticamente. (Se debe realizar con una sola línea de comandos).
    4. Entre los ficheros ejecutables (los que tienen extensión .exe) se encuentra uno llamado conversor.exe, no accesible por la variable PATH, que transforma los ficheros con extensión .doc en otros con el mismo nombre pero con extensión .rtf. A este ejecutable se le pasan los .doc como argumento (admite metacaracteres) y deja los ficheros convertidos en el directorio actual. Queremos convertir todos los ficheros .doc que tengan en su nombre la cadena parte, conservando los mensajes de error en caso de que se produzcan, y dejando el terminar libre para continuar con otras tareas mientras se realiza ésta.

  6. Realizar los apartados siguientes suponiendo que estamos en un lugar desconocido de la estructura de directorios de una máquina UNIX y que NO NOS MOVEMOS DE ALLÍ. NOTA: No se permite utilizar el ; (punto y coma) para separar órdenes en una misma línea.

    En un directorio llamado pub que cuelga del raíz se encuentran dos ficheros: el aspirin.tar y el ejemplos.tar.

    1. Crear con una sola línea de comandos dos directorios que cuelguen del padre del actual llamados herramientas y demos.
    2. Copiar el fichero aspirin.tar en el directorio herramientas que acabas de crear y el fichero ejemplos en el demos.
    3. Tanto el fichero aspirin.tar como el ejemplos.tar, son ficheros especiales ya que su contenido es un conjunto de ficheros. Para extraer estos ficheros existe una aplicación llamada tar ubicada en el directorio aplicaciones que cuelga del HOME. Este directorio aplicaciones no es accesible por la variable PATH. La aplicación tar funciona de la siguiente manera: extrae los ficheros contenidos en el fichero .tar pasado como argumento, dejando éstos en el directorio actual. Los mensajes de error van a la salida estandar.

      Extraer los ficheros contenidos en aspirin.tar y en ejemplos.tar, guardando los mensajes de error que se produzcan en el fichero errores que se ubicará en un directorio tmp que cuelga de HOME.

    4. Almacenar en un fichero llamado lineas que se ubicará en el directorio actual, todas la líneas que contengan la cadena de caracteres «red neuronal», de todos los ficheros del directorio demos (directorio creado en el apartado primero) cuyo nombre empiece por los caracteres «ejemplo». El contenido del fichero lineas debe estar ordenado. Realizar este apartado con una sola línea de comandos.
    5. Indicar qué comando se ha ejecutado si la respuesta del sistema es:

       UID    PID      PPID    C     STIME     TTY     TIME   CMD
      cevp   28134    28132    0   16:58:36   pts/80   0:00   -ksh
      cevp   28377    28134    0   17:01:08   pts/80   0:00   mail usuario
      cevp   28382    28134    0   17:01:12   pts/80   0:00   vi fichero.txt
      

      El proceso vi se nos ha quedado «colgado», eliminarlo. ¿Qué comando, distinto de exit, ejecutarías para cerrar la sesión

  7. Realizar los apartados siguientes suponiendo que estamos en un lugar desconocido de la estructura de directorios de una máquina UNIX y que NO NOS MOVEMOS DE ALLÍ. NOTA: No se permite utilizar el ; (punto y coma) para separar órdenes en una misma línea.

    En el directorio tmp hijo del padre del actual tenemos un programa fuente Pascal denominado calcula_entropia.p.

    1.
    Para compilar programas Pascal tenemos un compilador denominado pc, que se encuentra en un directorio llamado compiladores, hijo del raiz, y NO ACCESIBLE POR LA VARIABLE PATH. Este compilador acepta el fichero con el programa fuente a compilar como argumento, mostrando los errores, si los hay, por la salida estándar de errores. El resultado es un fichero ejecutable, que se almacena en el directorio actual con el nombre a.out. Compilar el programa calcula_entropia.p, guardando los posibles mensajes de error enun fichero llamado errores que se almacenará en el directorio actual.
    2.
    Mover el fichero a.out creado en el apartado anterior a un directorio llamado programas, que cuelga dle padre del actual, cambiando su nombre por calcula_entropia.

    Para los siguientes apartados se supondrá que el directorio programas está incluido en la variable PATH.

    El programa compilado en el apartado 1, acepta por la entrada estándar una serie de valores numéricos, que son interpretados como probabilidades de los símbolos de una fuente, calcula la entropía de eésta y el resultado es mostrado por la salida estándar.

    En un directorio llamado fuentes, hijo del HOME, tenemos una serie de ficheros cuyos nombres empiezan por S, sigue un número y acaban por .prob (por ejemplo: S1.prob, S32.prob). Su contenido son las probabilidades de una determinada fuente (una por fichero).

    3.
    Concatenar el contenido de todos los ficheros indicados en el párrafo anterior en un fichero, dejando éste en el directorio actual.
    4.
    Calcular las entropías de todas las fuentes contenidas en el fichero que acabamos de crear, guardando el resultado en un fichero que dejaremos en el directorio raíz. Realizar este apartado de manera qu el terminal no se quede bloqueado.
    5.
    En el directorio programas ya mencionado tenemos otro programa llamado aplica_huffman, que tras serle proporcionadas por la entrada estándar, y en orden decreciente, las probabilidades de una fuente, muestra por la salida estándar un código compacto para esa fuente. Aplicarle para el fichero S1.prob, teniendo en cuenta que las probabilidades en él almacenadas no están ordenadas. Mostrar la salida pantalla a pantalla.

    Mediante el comando adecuado obtenemos la siguiente información por pantalla:

     UID     PID    PPID   C   STIME     TTY   TIME  CMD
    guille  13273  13264  19  18:11:14  pts/2  0:00  telnet jupiter
    guille  13264  13262  80  18:10:39  pts/2  0:01  -csh
    guille  13275  13264  17  18:15:18  pts/2  0:01  calcula_entropia
    guille  13276  13274  80  18:20:15  pts/2  0:01  -csh
    

    6.
    Indicar la línea de comandos ejecutada para obtener la salida indicada.
    7.
    Finalizar la ejecución del programa calcula_entropía.

siguiente arriba anterior
Siguiente: Sobre este documento... Arriba: raiz Anterior: Resumen del mandatos de
Cesar Llamas Bello 2001-01-09