Entorno de Linux
En esta prctica comenzaremos con ambientarnos en el sistema operativo Linux. Conoceremos algunas de las caractersticas que son fundamentales para el uso del sistema enfocado a la programacin y administracin del mismo.
Sistema de archivos
El sistema de archivos es un conjunto de directorios y archivos donde se concentran los programas que se encargan de realizar todas las operaciones relacionadas con el almacenamiento y manipulacin de los archivos. Son las funciones que tratan con los dispositivos fsicos de almacenamiento del computador, como el disco duro, funciones como escribir, leer, borrar. El sistema de archivos nativo de Linux es el EXT2. Existen otros sistemas de archivos con journalising (si se inicia sin haber cerrado adecuadamente el sistema, no necesitan hacer un chequeo sino que recuperan automticamente su ltimo estado), los ms conocidos son EXT3, ReiserFS y XFS. Parte del sistema de archivos de Linux se muestra en la tabla 1.1
Tabla 1.1 Parte del sistema de archivos del sistema operativo Linux
bin boot dev etc home lib mnt root sbin tmp usr var
Binarios de comandos esenciales Archivos estticos de cargador de arranque Archivos de dispositivos Configuracin del sistema local-mquina Directorios home de los usuarios Libreras compartidas Punto de montaje de particiones temporales Directorio hogar del usuario root Binarios del sistema esenciales Archivos temporales Segunda jerarqua mayor Informacin variable
tambin es posible redireccionar cualquiera de los tres descriptores a un archivo. Los comandos que estn asociados con el redireccionamiento se muestran a continuacin: < (signo menor que): Acepta la entrada de un archivo >(signo mayor que): Enva la salida estndar a un archivo >> (signo mayor que dos veces): Aade la salida estndar a un archivo | (barra vertical o pipe): Conecta la salida estndar de un comando con la entrada estndar de otro. Este redireccionamiento es tambin conocido como tubera o pipe y es uno de los ms usados en linux
Ejemplo 1.1: Se muestra una secuencia de redireccionamientos en combinacin con algunos comandos. cat > archivo.txt cat >> archivo.txt ls > archivo.ls wc < archivo.ls Es importante anotar que para la terminacin y suspensin se procesos se tienen la combinacin de teclas Control+C y Control+Z, respectivamente. Ejemplo 1.2: Las siguientes secuencias de comandos se utilizan para la administracin de las cuentas de usuarios. En la figuras 1.1 y 1.2 se muestra un ejemplo de la ejecucin de estos comandos. #adduser Alfredo #password Alfredo #userdel Alfredo
Existen comandos que sirven para administrar el sistema como por ejemplo yast y yast2 para distribuciones como Fedora y apt-get install para instalacin de software en distribuciones como Ubuntu. El comando mount se usa para montar sistemas de archivos que se encuentran en particiones o dispositivos que no son detectados por los sistemas Linux y UNIX. En el siguiente ejemplo se muestra como se monta la particin SATA 1 en el directorio /mnt y que es del tipo ntfs. mount /dev/sda1/ /mnt t ntfs Anteriormente en distribuciones Fedora 3 y 4 no se detectaban automticamente las memorias USB por lo que se requera montarlas manualmente y esto se haca con la siguiente secuencia de comandos: En el archivo fstab (/etc/fstab) agregar la lnea: /dev/sda/ /mnt/flash auto noauto owner kudzu
Se crea el directorio /mnt/flash #mkdir /mnt/flash Se monta el volumen: #mount t auto /dev/sda /mnt/flash El comando history nos ayuda a ver el historial de comandos que hemos introducido en el Shell. Por otro lado el comando ifconfig permite ver la configuracin de los dispositivos de red. En Linux se da el nombre de filtros a un grupo de comandos que leen alguna entrada, realizan una transformacin y escriben una salida. Los comandos tales como tee, head, tail, cut, sort y uniq son ejemplos de estos. Las tuberas (tambin conocidas como pipes) relacionan la salida estndar de un comando con la entrada estndar de otro comando. Un ejemplo de tuberas se explica a continuacin. Con redireccionamiento se puede hacer: $who > archivo.temp $wc l < archivo.temp Con tuberas se escribe: $who | wc -l Otro ejemplo de uso de tuberas se muestra a continuacin: ls l | less
La utilidad tar (Tape Archiver) es una herramienta de fcil manejo disponible en todas las versiones de Unix y la mayora de POSIX que permite agrupar archivos individuales o directorios completos en un nico archivo. Las opciones ms comnmente utilizadas son: -c: Crea un contenedor -x: Extrae archivos de un contenedor -t: Testea los archivos almacenados en un contenedor -v: Modo verbose -f: Especifica el nombre del contenedor -Z: Comprime o descomprime mediante compress/uncompress (obsoleto) -z: Comprime o descomprime mediante gzip -j: Comprime o descomprime mediante bzip2 -p: Conserva los permisos de los ficheros Un ejemplo para crear un contenedor sin comprimir y luego verificar su contenido se muestra a continuacin: $tar -cvf /tmp/ejemplo1.tar /var/log $tar -tvf /tmp/ejemplo1.tar Para crear un contenedor comprimido con gzip y luego verificar su contenido $tar -czvf /tmp/ejemplo2.tar.gz /var/log $tar -tzvf /tmp/ejemplo2.tar.gz Para crear un contenedor comprimido con bzip2 y luego verificar su contenido $tar -cjvf /tmp/ejemplo3.tar.bz2 /var/log $tar -tjvf /tmp/ejemplo3.tar.bz2 Para extraer los datos almacenados en el contenedor sin comprimir, luego del comprimido con gzip y por ltimo el que fue creado con bzip2 se muestran las opciones adecuadas. $tar -xvf ejemplo1.tar $tar -xzvf ejemplo2.tar.gz $tar -xjvf /tmp/ejemplo3.tar.bz2 Prctica 1.1: Investiguen el uso de los comandos: cal, date, echo, time, uname y muestren su funcionamiento en una terminal. (5% de la calificacin de la prctica) Prctica 1.2: Investiguen el uso de los comandos: w, who, bash, wc, clear, ifconfig, rm, mv, cp, mkdir, df, du, pstree y muestren su funcionamiento en una terminal. (10% de la calificacin de la prctica) Prctica 1.3: Investiguen el uso de los comandos: kill l -9 y trap l y muestren su funcionamiento en una terminal. (5% de la calificacin de la prctica) Prctica 1.4: Investiguen el uso de los comandos: pwd, su, sudo, passwd, userdel, useradd y muestren su funcionamiento en una terminal. (10% de la calificacin de la prctica) 5
Programa1a.c En el siguiente programa se muestra la funcin getuid(). (5% de la calificacin de la prctica). Para poder copilar el programa utilice el comando gcc.
Programa1b.c En el siguiente programa se muestra el funcionamiento de las funciones getpid() y getppid(). (5% de la calificacin de la prctica)
Una variable de entorno es un objeto designado para contener informacin usada por una o ms aplicaciones. Usar variables de entorno permite cambiar una opcin de configuracin para una o ms aplicaciones fcilmente. En el siguiente ejemplo se muestran ejemplos para visualizar variables de entorno: $env $echo $HOME Programa1c.c Con el siguiente programa se muestran las variables de entorno del sistema y sus valores. Este programa funciona en Linux y Windows. (5% de la calificacin de la prctica)
Programa1d.c Usar la funcin getenv( ) para crear un programa para que imprima nicamente el valor de la variable HOME. (15% de la calificacin de la prctica) Programa1e.c Realizar un programa que realice las siguientes operaciones: (20% de la calificacin de la prctica) Crear un archivo Aceptar diez nmeros dados por el usuario Grabar los nmeros del punto anterior en el archivo creado Cerrar en archivo
Programa1f.c Realizar un programa que realice las siguientes operaciones: (20% de la calificacin de la prctica) Abrir el archivo del programa anterior en modo lectura Leer los nmeros del archivo Mostrar los nmeros en pantalla Calcular promedio, suma, multiplicacin, desviacin estndar y varianza de los nmeros Mostrar los resultados en pantalla Cerrar el archivo