Linux El Sistema Operativo 1 Capítulo 1 LINUX EL SISTEMA OPERATIVO A mediados de los años 70, durante la guerra fría, el gobierno norteamericano escogió un sistema operativo muy popular entre las universidades llamado Unix para crear un sistema de comunicación remota que fuera inmune a ataques y usara la línea telefónica como vía. Esto hizo que se implementara diversos protocolos de conexión a red, haciendo de Unix el sistema operativo sobre el cual se creó Internet. Con el tiempo han surgido varios sistemas operativos tipo Unix creados por diversas empresas: AIX (IBM), Solares (Sun), IRIX (Silicon Graphics), HP-UX (HP), Tru64 (Compaq), MacOSX (Apple), entre otros. Dentro de los sistemas operativos Unix para computadores personales destacan Linux y BSD (OpenBSD, FreeBSD, NetBSD) los cuales son de código fuente abierto (open source), gratuitos y de gran potencia no sólo para trabajo en red, sino que para uso general del computador y hoy por hoy está sumando gran cantidad de adeptos, disminuyendo con esto el monopolio que ejerce Microsoft Co. con sus mediocres productos (líneas Windows, Office, IE entre otros).
Linux El Sistema Operativo 2 Arranque Al encender el equipo (estación de trabajo), el hardware lee el mbr del disco duro maestro o primario donde se encuentra el gestor de arranque. Este es un pequeño programa que contiene información sobre particiones existentes, a que corresponden (a que sistemas operativos) y la ubicación de su kernel. Luego de la carga del kernel se monta el sistema de archivos y comienza el proceso init el cual es un conjunto de instrucciones, que es propia de cada sistema operativo, y que regula la conexión a red, los software a utilizar, la activación del modo multiusuario, la ejecución del modo X-Window, el comportamiento frente al usuario, etc. En el caso de Linux, una vez que se ha finalizado el proceso de arranque, se pide la identificación del usuario. A pesar de que es posible dejar el computador sin un usuario determinado (en algunas distribuciones) lo más recomendado es que sea obligatorio el uso de un usuario con su correspondiente contraseña. Entonces escribimos el login (nombre del usuario) y el password (contraseña). login: username password: ******** Luego hay dos posibilidades, que se obtenga un símbolo del sistema ($) y el sistema operativo queda funcionando solo con la shell (para la interacción con el usuario) o que parta el X Window y luego un entorno de escritorio o gestor de ventanas como Gnome, KDE, XFCE u otro. Hardware Son las partes físicas del computador, incluye todas las piezas y accesorios. Software Datos y programas que se encuentran almacenados en la memoria del computador y que existen en y gracias al hardware. mbr Partición Viene del inglés master boot record y es un pequeño sector de memoria al principio del disco duro que contiene información sobre la tabla de particiones. Es una división lógica del disco duro que le permite a un software acceder a su información. Sistema Operativo Conjunto de softwares que básicamente permiten la vinculación del usuario con el hardware, proporcionando una interfaz de comunicación que permita gestionar los recursos de manera eficiente. Kernel Es el núcleo del sistema operativo. Es el nexo directo con el hardware, gestiona todos sus recursos. Es quien decide que software utilizará que hardware y por cuanto tiempo. Distribuciones Linux Existen distintas versiones de Linux, que tienen en común el modo de arrancar, el sistema de archivos, el sistema de permisos, el kernel, la shell, entre otros. Sus diferencias son básicamente el modo de configuración, la forma de descargar e instalar programas externos y el entorno de escritorio que utiliza (aunque se puede cambiar). Existen muchas distribuciones, pero las más grandes (y de las que derivas la mayoría) son Debian, SuSe, Slackware, Gentoo y RedHat. Shell X Window Es el llamado intérprete de comandos. Es el encargado de entender y ejecutar las órdenes básicas de manejo del sistema. La shell típica de Linux es bash. Es el encargado de dar una interfaz gráfica. Funciona como servidor máquina-usuario ya que contiene todo un conjunto de softwares que permiten el manejo de accesorios (monitor, teclado, mouse, etc). El más usado actualmente es el Xorg- X11 Entorno de escritorio Es el conjunto de software que funciona sobre el X Window y da una interfaz amigable entre el software y el usuario.
Linux El Sistema Operativo 3 Sistema de Archivos Es sistema de archivos de Linux y la forma de trabajar con las particiones funciona de un modo muy distinto al de MS Windows, al que la mayoría está acostumbrado. Por está razón se hará una analogía entre ambos sistemas operativos. En MS Windows cuando se tiene una partición, ésta se nombra C: y si se tienen más particiones, unidades de CD o DVD, pendrives, etc. se nombran D: E: etc. En Linux los dispositivos de memoria (particiones, unidades de CD o DVD, pendrives) no tienen una ubicación fija, ya que uno los define (o se definen automáticamente por el software). En Linux el sistema de archivos se monta en / que vendría a ser como Mi PC de MS Windows. Luego se pueden crear directorios (carpetas) o almacenar archivos allí. Si se crea una carpeta boot esta se identifica por su ubicación: /boot. A su vez si creamos otra carpeta en boot o guardamos un archivo este se nombra: /boot/carpeta o /boot/grub.conf En Linux existen varios directorios típicos como boot (se almacenan archivos del arranque), root, bin (archivos ejecutables), usr (programas), dev (dispositivos), home (archivos de usuarios), proc (mensajes del kernel), mnt (montajes temporales), etc (archivos de configuración), tmp (archivos temporales), var, lib (librerías), entre otras. Una partición puede estar en cualquier directorio, así como los dispositivos de memoria también pueden ser montados en un directorio a elección. Generalmente los dispositivos de memoria se montan en la carpeta /mnt como /mnt/cdrom, /mnt/floppy, /mnt/usbmem, etc. Línea de Comando En el caso de que se entre a un entorno de escritorio (Gnome, KDE), para poder acceder a la línea de comando es necesario ejecutar un programa llamado terminal que abre una ventana con la línea de comando dentro del gestor de ventanas. En el caso que no se entre a un entorno de escritorio directamente, la shell está lista para escuchar los comandos que el usuario digite. El formato GNU de línea de comandos consiste en el comando en sí (o sea el programa a usar), argumentos opcionales o parámetros y el operando sobre el cual se trabaja el comando (como un archivo). Por ejemplo $ comando -opciones -parámetros operando (cuando aparezca el signo peso $, quiere decir que lo que aparece a continuación es un comando y al escribirlo en el computador, no es necesario agregar el signo $, porque ya está) Los sistemas operativos basados en Unix (como Linux) funcionan con un sistema llamado input/output (I/O). Este sistema consiste simplemente en que todo programa o comando requiere un parámetro de entrada (input) con el que trabajará el programa, algo así como la materia prima y un parámetro de salida, que es donde se entregarán los resultados del programa (output) en el caso que los haya. A veces si no se da un parámetro de salida (como un nombre de archivo) donde poner los resultados, estos solo se muestran en pantalla, lo que se conoce como stadard out o stdout. Muchos programas de Linux usan el stdout como salida por defecto. Los archivos propios de cada usuario se guardan en /home/usuario, y aquí se encuentran los archivos de configuración propios para cada usuario así como su escritorio y su papelera.
Linux El Sistema Operativo 1 Comandos: Archivos y directorios pwd - print working directory Este comando sirve para imprimir en pantalla el pathname completo del directorio de trabajo actual. Solo se escribe el comando, no tiene opciones ni parámetros. cd cambiar directorio de trabajo Cambia el directorio de trabajo. El único argumento que necesita es el pathname de l directorio al que se desea trabajar. $ cd /home/bioinfo mkdir crear directorios $ mkdir bqa449 Crea subdirectorios en el directorio de trabajo actual ls saber que archivos tengo Entrega en pantalla una lista de los subdirectorios y archivos que existen en el directorio de trabajo, a no ser que se especifique otro. Se puede utilizar el comodín * que vale por un número indeterminado de caracteres. El modificados -l entrega un informe detallado. $ ls *.txt Entregará los archivos terminados en.txt del directorio de trabajo. $ ls -l /usr Entregará todos los archivos del directorio /usr con información más detallada de cada uno de ellos rm eliminar archivos Elimina los archivos o directorios. La opción -f evita confirmar la eliminación de cada archivo, el modificador -R elimina todos los archivos y subdirectorios en forma recursiva. rmdir elimina directorios vacíos cp copiar Copiar archivos y directorios desde una ubicación especificada hacia un destino especificado. $ cp original destino mv mover o cambiar nombre Funciona igual que copiar, solo que mv es como cortar de MS Window. Si se da el mismo directorio de origen y destino, pero otro nombre solo cambia el nombre del archivo.
Linux El Sistema Operativo 5 Ambiente de Trabajo Multiusuario Para tener acceso a un sistema Unix, se requiere estar registrado como usuario. Esto genera una identificación como usuario, verificado mediante un nombre de usuario y una contraseña, otorgándonos dominio sobre una parte del sistema (directorio /home/usuario) y acceso a pertenecer a grupos. El acceso a los recursos es controlado a partir de permisos que poseen los archivos y directorios asociándolos a distintos usuarios y grupos definidos. Estos permisos generan el modo de acceso sobre los archivos y directorios, pudiendo ser representados de forma simbólica. Existe un usuario en todo sistema Unix llamado el superusuario, quien tiene acceso a todos los archivos y directorios, así como es capaz de modificar los permisos de estos. Este superusuario se llama root y para acceder como él, desde la línea de comando se digita el comando su, que pide la contraseña correspondiente. Existen tres tipos de permisos que un usuario puede tener para un archivo (o directorio): r (4) permiso de lectura w (2) - permiso de escritura x (1) - permiso de ejecución El primer bloque se caracteres se indican los permisos correspondientes a cada nivel de uso, luego aparece el dueño y el grupo y finalmente la fecha de creación del archivo y su nombre. Los permisos están agrupados en un primer caracter que define si es un archivo (-), directorio(d) o enlace (l),. El segundo grupo de tres caracteres se aplican al usuario dueño del archivo (en este caso felipe), los siguientes tres caracteres se aplican al grupo (o sea todos los usuarios que pertenezcan al grupo users) y los últimos tres caracteres se aplican a los usuarios que no pertenezcan a este grupo. Los permisos se ajustan con el comando chmod y el dueño y grupo con el comando chown. Para conocer los permisos de un archivo se utiliza normalmente: ls -l Comandos - Avanzados man manuales de programas Este sencillo programa permite ver el manual de cualquier programa de Unix $ man grep Muestra el manual del programa grep. tar empaquetado de archivos y directorios Es un programa que permite agrupar archivos y directorios en un solo paquete, así como comprimirlos utilizando otros programas. Los modificadores más usuales son: -f Especifica los archivos a utilizar -c Crea un paquete de archivos -x Desempaqueta -v Muestra en pantalla los archivos que se están procesando -z Comprime o descomprime utilizando gzip. -j Comprime o descomprime utilizando bzip2. zip Herramienta de empaquetado y compresión de archivos, similar a tar, pero que genera archivos.zip compatibles con MS Windows.
Linux El Sistema Operativo 6 head encabezado de archivos Permite ver las primeras líneas de un archivo, por defecto entrega 10 líneas, pero se puede ajustar para ver más. tail final de un archivo Muestra las últimas 10 líneas de un archivo. Funciona igual que head. more paginador de archivos Imprime en pantalla el contenido de un archivo. Si este es muy grande y no alcanza a salir en la pantalla, more, lo va mostrando de página en página grep búsqueda de secuencias de caracteres en archivos Busca expresiones regulares en uno o varios archivos, permitiendo encontrar archivos por algún contenido conocido. $ grep ATOM 3nos.pdb Este comando busca y muestra todas las líneas que contengan la palabra ATOM dentro del archivo 3nos.pdb awk - extracción de columnas Este programa extrae los valores de una columna en particular desde un set de varias columnas. $ awk datos.txt {print$0} Con este comando se extrae la primera columna del archivo datos.txt. Se comienza a contar desde 0. Redirección de comandos En Unix, muchos comandos leen desde una entrada estándar y derivan el resultado a una salida estándar. En las shells de Unix es posible manejar estos flujos en forma previa, proporcionando una manera uniforme de realizar estas tareas. Entre los mecanismos de redirección de entrada y salida estándar de comandos Unix están: > Redirecciona la salida de un comando hacia un archivo $ ls -l /home/felipe Este comando muestra todos los archivos de la carpeta /home/felipe. Pero: $ ls -l /home/felipe > /home/felipe/lista.txt Con este comando lo mismo que antes iba a la salida estándar (lo muestra en pantalla) ahora se almacena como texto en el archivo lista.txt que se ubica en /home/felipe. >> Anexa a un archivo existente Hace lo mismo que el anterior, pero en este caso agrega al final de archivo que ya existía. (pipe) Envía la salida de un comando como entrada de otro Ejemplos: $ dmesg Este comando muestra todos los mensajes del kernel (es muy grande y no alcanza salir completo en la pantalla) $ dmesg grep usb Ahora en este reporte se busca la palabra usb y se muestran las líneas donde aparecen.
Linux El Sistema Operativo 7 Editores de texto Linux como Sistema Operativo de Red La edición de textos permite la modificación de los contenidos de un archivo en sus caracteres, sin asignarlo a un programa específico, lo que se conoce como texto plano. Esta independencia respecto a un programa lo hace diferente a los procesadores de texto como MS-Word, OpenOffice, los cuales agregan encabezados de reconocimiento a los archivos. En bioinformática a menudo es necesario crear o modificar archivos de este tipo, así como archivos de configuración en Linux. Para esto son útiles los editores de texto, los cuales vienen incluidos en los distintos sistemas Unix y entre los más frecuentes de encuentran: vi y vim pico joe emacs nano El más recomendable es nano pues entrega los comandos de manejo directamente en pantalla y es muy sencillo de usar, aunque emacs está dentro de los preferidos de los usuarios Linux, por su flexibilidad y capacidad de extensión. Entendemos por trabajo en red (o remoto), todo lo que implique la conexión de dos o más máquinas separadas físicamente para transferir información de cualquier tipo. Dentro de esta definición podemos considerar el mismo Internet, así como todos los protocolos que se explicarán a continuación. En el ámbito del Internet o trabajo remoto, siempre debe haber por lo menos un computador que sirva como cliente y otro de servidor. El cliente es la máquina que solicita el servicio, es normalmente el computador que uno como usuario está utilizando, por ejemplo al conectarse al Internet. El servidor el la máquina que recibe la solicitud y entrega lo solicitado, como un servicio interactivo (Internet y HTTP), archivos (FTP y PPP), o una shell (Telnet y SSH). Existen muchos protocolos que nos permiten conectarnos a máquinas remotas, entre las cuales están: TCP/IP (Transmission Control Protocol / Internet Protocol), http (Hypertext Transfer Protocol), FTP (File Transfer Protocol), PPP (Point-to-Point Protocol), Telnet, DHCP, SLIP, entre otros. Dirección IP y Hostname Para poder usar la red en cualquier sistema, debemos identificar la máquina que uno usa dentro del sistema completo. Para eso se usa normalmente el protocolo IP (Internet Protocol) que establece un sistema de numeración para identificar a las computadoras en el Internet. Esta dirección IP consta de cuatro números entre 0 y 255 separados por puntos, permitiendo a nuestro software de red conectarse al sitio deseado a través de esta dirección, la cual es propia de mi máquina. Para facilitar el acceso a estas direcciones, se asocia un hostname a una dirección IP, para facilitar las cosas a los usuarios. FTP Transferencia de archivos FTP es un protocolo de transferencia de archivos a través de la red. Un servidor FTP permite a los clientes conectarse de manera anónima y navegar y descargar los archivos disponibles. Existe un gran número de aplicaciones FTP para Linux, tanto para consola como en ambiente X-Window.
Linux El Sistema Operativo 8 Telnet y SSH Telnet es un protocolo que permite a un usuario conectarse a un computador remoto como si estuviese realmente allí, permitiendo el acceso a nuestros archivos y trabajar con ellos desde cualquier parte del mundo a través de una conexión por Internet. Sin embargo, frente a Telnet, SSH (secure shell) ofrece sesiones remotas encriptadas que permiten una conexión mucho más segura (aunque no infalible) y con la misma funcionalidad. Comandos - Trabajo remoto lynx navegador web por consola Es un navegador de uso general, muy sencillo y liviano, que funciona bajo consola, muy útil cuando no se tiene acceso a X-Window. Lynx solo muestra texto en un formato simple, sin imágenes, animaciones, applets, banners o addons. $ lynx www.google.cl ssh secure shell (conexión segura por shell) Es la mejor forma de trabajar de forma remota en la shell de un computador (llamado servidor) al que no se tiene acceso físico a través de otro computador (llamado cliente). Otorga una interfaz por consola, de la misma manera que si uno estuviera trabajando físicamente en ese computador. Funciona mediante cuentas de usuario existentes en el computador a cual conectarse, y lo identifica por su IP. Además existe la opción de activar la transferencia de gráficos (X- Forwarding), o sea utilizar programas que usen el servidor X. $ ssh l felipe 158.251.6.4 X Con la opción l, se indica el nombre de usuario, y con la opción X, se activa la transferencia de gráficos. El IP indicado corresponde a la dirección del servidor al cual deseamos conectarnos.
Linux El Sistema Operativo 98 scp transferencia de archivos por ssh Este programa forma parte de las aplicaciones de ssh y permite copiar archivos de un computador a otro. Muy útil cuando se quieren respaldar archivos del servidor por medio de disquetes, pendrives o cds (puesto que no se tiene acceso físico al servidor pero sí al computador cliente). $ scp felipe@158.251.6.4:/home/felipe/conf.d /home/bioinfo Con este comando estamos copiando el archivo conf.d que se encuentra en el directorio /home/felipe del usuario felipe en el computador 158.251.6.4 hasta el directorio local (en el computador cliente) /home/bioinfo. Puede usarse para copiar carpetas con todo su contenido (modo recursivo) con el modificador r. wget descarga de archivos desde Internet Programa ampliamente usado Linux para descargar a través de consola un archivo desde Internet. Puede utilizar protocolo http como ftp. $ wget http://mirror.ucv.cl/gentoo/distfiles/emboss-3.0.tar.gz Tiene la opción de continuar con descargas incompletas mediante el modificador c.