linux lpi101 by lechu

Upload: jose-alberto-villalba-gonzalez

Post on 13-Jul-2015

149 views

Category:

Documents


0 download

TRANSCRIPT

Introduccin a LINUXOBJETIVOS Brindar los conocimientos bsicos para la utilizacin del sistema operativo LINUX y preparar al alumno para el examen de certificacin LPI 101 Linux Certified Assistance. AUDIENCIA Estudiantes y profesionales de sistemas, administradores y desarrolladores de sistemas REQUISITOS Conocimientos bsicos de algn sistema operativo DURACION 27 hs TEMARIO 1.0 Instalacin de LINUX 1.1 - Historia de LINUX y GNU 1.2 - Distribuciones de LINUX 1.3 - Conociendo el Hardware 1.4 - Instalacin de Linux 1.5 - Esquemas de particionamiento 1.6 - Boot Managers 2.0 Introduccin al Shell 2.1 - Uso de la lnea de comandos 2.2 - Variables de entorno 2.3 - Administracin de procesos. Prioridades

3.0 Instalacin de Software 3.1 - Red Hat Package Manager 3.2 - Debian Package Manager 3.3 - Instalacin de software a partir del cdigo fuente

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

4.0 Procesamiento de texto 4.1 Redireccionamiento y tuberas 4.2 - Modificacin de textos con filtros 4.3 - Bsquedas usando expresiones regulares 5.0 Sistemas de Archivos 5.1 - Visin general del sistema de archivos de LINUX 5.2 - Creacin de particiones y de sistemas de archivos 5.3 - Inspeccin y verificacin del sistema de archivos 5.4 - Montaje y desmontaje de sistemas de archivos 6.0 Administracin de archivos 6.1 - Comandos para administracin de archivos 6.2 - Jerarqua del sistema de archivos 6.3 - Localizacin de archivos 6.4 - Enlaces 6.5 Permisos, usuarios y grupos 6.6 - Herramientas de compresin 6.7 - Administracin de cotas 7.0 Uso de la Documentacin 7.1 - Comando man 7.2 - Uso de la documentacin de /usr/doc 7.3 - Documentacin en Internet 8.0 Proceso de Arranque 8.1 - Uso de LILO y GRUB 8.2 - INIT. Niveles de ejecucin 8.3 - Configuracin del proceso de arranque 9.0 El Sistema X Window 9.1 - El lanzamiento X11R6.8 9.2 - Entornos de escritorio y gestores de ventanas 9.3 - Archivos de configuracin del servidor X 9.4 - Fuentes 9.5 - Niveles de ejecucin y X 9.6 - Recursos adicionales

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

1. Instalacin de LINUX 1.1 - Historia de LINUX y GNU

El autor primario de Linux es Linus Torvalds. A partir de la version original, ha sido mejorado por incontables personas de todo el mundo. Se trata de un clon del sistema operativo Unix, escrito desde cero. Ni USL, ni la Universidad de California, Berkeley, tuvieron participacion en la escritura de Linux. Una de las cosas mas interesantes de Linux es que el desarrollo ocurre simultaneamente alrededor del mundo. La gente ha contribudo desde Australia a Finlandia y esperamos que lo siga haciendo. Linux comenzo como un proyecto para explorar el chip 386. Uno de los primeros proyectos de Linus fue un programa que pueda alternar entre la impresion de AAAA y BBBB . Esto luego evoluciono hacia Linux. Linux ha sido registrado bajo los terminos de la Licencia Publica General GNU (GNU General Public License) o GPL. Esta licencia, escrita por la Free Software Foundation (FSF), esta diseada para evitar que alguna persona restrinja la distribucion de software. En pocas palabras, dice que aunque Ud. cobre a alguien por entregarle una copia, no podra impedir que ese alguien la regale. Tambien significa que debe estar disponible el codigo fuente4 . Esto es util para los programadores. Cualquiera puede modicar Linux y aun distribuir sus modicaciones, siempre que mantenga el codigo bajo la misma licencia. En Linux puede correr la mayora del software popular en Unix, incluyendo el Sistema de Ventanas X. X se desarrollo en el Instituto Tecnologico Massachusetts, para permitir a los sistemas Unix la creacion de ventanas gracas, y la comoda interaccion con las mismas. En la actualidad, el sistema X se usa en todas las versiones disponibles de Unix. Ademas de las dos variaciones de Unix, System V y BSD, existe un conjunto de documentos de estandarizacion publicados por la IEEE denominados POSIX . Linux antes que nada satisface los documentos POSIX-1 y POSIX-2. Su apariencia se asemeja mucho a la de BSD en ciertas partes, mientras que es parecido a System V en otras. Es una combinacion (y para la mayora de las personas, una buena) de los tres estandares. Algunas de las utilidades includas con las distribuciones de Linux proceden de la Free Software Foundation y son parte del proyecto GNU. El proyecto GNU es un esfuerzo para escribir un avanzado sistema operativo portable con el estilo de Unix. \Portable" signica que pueda correr en una variedad de maquinas distintas, no solo en PCs Intel, Macintoshes, o lo que sea. El sistema operativo del Proyecto GNU se llama Hurd. La principal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz del usuario, sino en la del programador |el Hurd es un sistema operativo moderno, mientras que Linux es mas parecido al dise~no original de Unix. La historia precedente de Linux olvida mencionar otra persona mas alla de Linus Torvalds. Por ejemplo, H. J. Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (dos elementos necesarios para todos los programas en Linux) casi desde el principio de la vida del sistema operativo. Ud. puede encontrar una lista de personas que merecen reconocimiento por su trabajo en cada sistema Linux, en el archivo /usr/src/linux/CREDITS .

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

1.2 - Distribuciones de LINUX

QU ES UNA DISTRIBUCIN DE LINUX? Como se dijo antes, en realidad Linux es solo un kernel, es decir, el ncleo del sistema operativo. Para que este ncleo sea de utilidad como un sistema operativo, el kernel se utiliza con otros programas que permiten poder interactuar con la mquina. Si se quiere ver de esta forma, esto es el equivalente de lo que se distribuye con "el disco de Windows". Pero en Linux se va un paso ms all: no solo se distribuye un sistema mnimo, con el cual usualmente "no se puede hacer nada", sino que adicionalmente se "empacan" otros programas de utilidades, aplicaciones, juegos, etc, para conformar lo que se conoce como una distribucin de Linux. As existe una cantidad bastante grande de distribuciones de Linux. Las diferencias entre una distribucin y otra son muy variadas pero derivan principalmente de los objetivos buscados y la forma en la que se implementan estos objetivos: facilidad de instalacin, optimizadas para usuarios caseros, diseadas para funcionar como firewalls, etc. y los paquetes (aplicaciones) incluidas. Entre las distribuciones ms usadas en Costa Rica, segn las estadsticas pasadas de boca en boca, se encuentran: Debian GNU/Linux. Cuenta con ms de 9000 paquetes, cada uno para para 11 arquitecturas distintas, y es desarrollada por casi un millar de programadores en todo el mundo, los cuales se mantienen en contacto por medio de Internet. Su objetivo es desarrollar un sistema operativo que se distinga por su excelencia tcnica, y que est basado en software libre. El proyecto Debian, dentro del cual se desarrolla esta distribucin, fue donde se originaron los lineamientos de Software Libre de Debian, los cuales son la base de la definicin de Cdigo Abierto (OSD). Debido a que Debian no es una compaa, el soporte tcnico (pagado) es provisto por terceros. Mandrake Linux. Es la distribucin basada en RedHat que ms xito ha tenido. Su desarrollo se origin a partir de opiniones divergentes respecto a qu hacer con KDE (en trminos de su integracin en RedHat), optimizaciones especficas para procesadores Pentium, el proceso de instalacin y otros temas. RedHat Linux. Es una distribucin comercial, y fue en gran parte la responsable de introducir Linux en el mundo corporativo. Se orienta ms que todo hacia la produccin de una distribucin que sea fcil de instalar y administrar, para lo cual han fundado el desarrollo de varios proyectos orientados a este fin. Adems brinda soporte tcnico (pagado) en forma directa.

Slackware Linux. Es una de las distribuciones ms antiguas y respetadas. En un inicio fue desarrollada completamente por una persona, Patrick Volkerding, y actualmente esto es bsicamente an as. La opinin generalizada es que Slackware es algo difcil de instalar y algo difcil de utilizar, pero eso es con certeza una exageracin: Slackware puede ser tan difcil como uno guste... y a todo esto, qu quiere decir Slackware? Es posible que el nombre est relacionado con la acepcin corriente de slack (eliminar tensin), pero es ms probable que sea una referencia a la teologa de la Iglesia del SubGenio (Church of the SubGenius), que dice que slack es la materia prima de la que se origina la felicidad humana

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

1.3 - Conociendo el Hardware

Conoce tu hardware ! Uno de los puntos fuertes de GNU/Linux es su versatilidad, pudiendo instalarse sobre gran variedad de plataformas distintas, reconociendo gran variedad de hardware. Esta labor de reconocimiento de hardware se debe a los programadores encargados de mantener el kernel, que van aadiendo parches segun aparecen nuevos dispositivos, muchas veces sin la colaboracin del fabricante. En la prctica esto quiere decir que posiblemente podrs instalar linux sin ningun problema, incluso sobre ordenadores antiguos; la posibilidad de dificultades aumenta si se trata de dispositivos de ltima generacin, por una mera cuestin de tiempo. Ningun fabricante en su sano juicio lanzara al mercado un dispositivo sin contar con soporte previo para Windows, pero desgraciadamente el soporte para GNU/Linux suele ser descuidado, asi que estos novisimos dispositivos pueden no ser reconocidos automticamente durante la instalacin. Normalmente ser un problema temporal, hasta que los desarrolladores del kernel tengan oportunidad de figurarse como dar soporte. El caso winmodem Un winmodem es un modem controlado por software, designado para trabajar unicamente en sistemas operativos windows. Si tienes una cosa de esas en tu ordenador, es prcticamente imposible que puedas conectarlo a internet bajo GNU/Linux. Como saber si te han vendido un winmodem en lugar de un modem autntico? fcil. Si tu modem es interno, prcticamente seguro que es un winmodem. Si por el contrario es externo, se tratar de un modem hardware que posiblemente podrs conectar. Con diferencia la forma mas sencilla de conectar tu ordenador a internet es mediante una tarjeta ethernet y un router externo. El caso SATA Durante muchos aos los discos duros han funcionado con controladoras ATA (IDE), si bien ltimamente cada vez mas ordenadores van incorporando controladoras SATA, o Serial ATA. GNU/Linux soporta variantes de SATA desde siempre, si bien por el problema indicado anteriormente, algunos nuevos controladores no son reconocidos. Si es tu caso, la solucin pasa por usar tu nuevo disco SATA en modo ATA, o bien parchear el kernel con el driver apropiado a la controladora SATA requerida en tu caso ... o esperar a que los parches vayan aterrizando en el kernel y apareciendo en las nuevas distribuciones linux SATA AHCI Uno de los casos comentados es la nueva controladora AHCI ("Advanced Host Controller Interface") de 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

intel, que puedes encontrar, por ejemplo, en las series DELL 8400, que vienen con discos SATA y controladoras SATA AHCI (ICH6). La Arquitectura AHCI es abierta, y ha recibido elogios de los desarrolladores del kernel, por lo que es de esperar que prximamente sea incorporada al kernel. Mientras tanto, la opcin mas sencilla es instalar tu HD como ATA: 1. 2. 3. 4. Reinicia el ordenador y entra en la BIOS (F2) En el menu de la BIOS selecciona "Drives" -> "SATA Operation" Posiblemente veas seleccionada la opcin AHCI. Selecciona en su lugar "RAID Autodetect/ATA" Graba los cambios y continua con el arranque del ordenador

Por supuesto, si tienes en tu sistema doble arranque, para GNU/Linux y windows, cada vez que quieras reiniciar con otro sistema operativo debers pasar por la BIOS y deshacer los cambios, de forma que Windows use el controlador AHCI y Linux ATA. Se trata de una solucin temporal hasta que exista soporte AHCI disponible.

1.4 - Instalacin de Linuxhttp://www.gentoo.org/doc/es/index.xml http://www.es.debian.org/releases/stable/i386/index.html.es http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/es/ http://www.guia-ubuntu.org/index.php?title=Instalaci%C3%B3n_est%C3%A1ndar http://www.slackware-es.com/slackbook/book.html

1.5 - Esquemas de particionamiento

Dispositivos de Bloque Examinaremos de forma detallada los aspectos de Gentoo Linux as como Linux en general que tengan que ver con discos, sistemas de ficheros de Linux, particiones y dispositivos de bloque. Una vez est familiarizado con las entraas de los discos y sistemas de ficheros, le guiaremos a travs del proceso de creacin de particiones y sistemas de ficheros de tu instalacin Gentoo Linux. Para empezar, explicaremos el trmino dispositivos de bloque. Quizs el dispositivo de bloque ms conocido es el que representa la primera unidad de disco llamada /dev/sda. Las unidades SCSI y Serial ATA son etiquetadas mediante /dev/sd*; incluso las unidades IDE son conocidas como /dev/sd* con el nuevo framework libata del kernel. Si est utilizando el antigo framework de unidades, entonces la primera unidad IDE ser /dev/hda. Los dispositivos de bloque mencionados anteriormente representan una interfaz abstracta de disco. Las aplicaciones pueden hacer uso de estas interfaces para interactuar con el disco duro de la mquina sin importar el tipo de unidad que tienes: IDE, SCSI, o cualquier otra. La aplicacin puede simplemente 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

dirigirse al almacenamiento en el disco como a una serie de bloques de acceso aleatorio de 512-bytes situados de forma contigua.

Particiones Aunque tericamente es posible utilizar el disco duro completo para albergar la instalacin Linux, esto casi nunca se hace. En su lugar, los dispositivos de bloque enteros se dividen en partes ms manejables y pequeas. En los sistemas stas se llaman particiones. Particiones se dividen en tres tipos: primarias, extendidas y lgicas. La particin primaria es aquella que almacena su informacin en el MBR (registro principal de arranque). Ya que el MBR puede almacenar hasta 512 bytes, slo pueden definirse cuatro particiones primarias (por ejemplo, desde /dev/sda1 hasta /dev/sda4). Una particin extendida es una particin primaria especial (entendemos que la particin extendida debe ser una de las cuatro posibles particiones primarias) la cual contiene ms particiones. Al principio no exista este tipo de particin, pero como cuatro primarias eran muy pocas, se dise para extender el esquema de particionamiento sin perder la compatibilidad inversa. Una particin lgica es aquella que est dentro de la particin extendida. En otras palabras, estas particiones no se definen dentro del MBR, sino que se declaran dentro de la particin extendida.

Diseando un Esquema de Particionamiento Esquema de Particionamiento por Defecto Si no est interesado en disear un esquema de particionamiento particular para tu sistema, puede hacer uso del esquema que utilizaremos en este manual: Particin /dev/sda1 /dev/sda2 /dev/sda3 Sistema de Ficheros ext2 (swap) ext3 Tamao 32M 512M El resto del disco Descripcin Particin de arranque Particin de intercambio Particin de raz

Cuntas? y de qu tamao? El nmero de particiones que necesita depende mucho de su entorno particular. Por ejemplo, si la mquina tiene muchos usuarios, lo ms probable es que desee tener /home en una particin separada para facilitar las tareas de copia de respaldo y aumentar la seguridad. Si est instalando Gentoo para funcionar como servidor de correo, debe tener /var sobre una particin separada ya que es all dnde se 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

almacena todo el correo. Asimismo, una buena eleccin de sistema de ficheros optimizar el rendimiento del equipo. Las estaciones de juegos deben disponer de una particin /opt ya que la mayora de juegos se instalan en ese directorio. Las razones para todas estas recomendaciones son similares a aquellas que hemos mencionado para el caso de /home: seguridad y salvaguarda de datos. Muy recomendable mantener /usr con un tamao considerable: no salemente contiene la mayor parte de las aplicaciones sino que adems el propio rbol de Portage ocupa sobre unos 500 Mbytes sin contar las fuentes que guarda dentro de l. Como puede ver, todo depende de lo que quiera conseguir. Tener particiones o volmenes separados tiene las siguientes ventajas: Puede elegir el mejor sistema de ficheros para cada particin o volumen El equipo en su totalidad no puede quedar sin espacio si una herramienta o aplicacin est escribiendo datos de forma continua al volumen o particin Si es el caso, el tiempo dedicado a las comprobaciones de integridad de sistemas de fichero se reduce ya que las comprobaciones pueden ser llevadas acabo en paralelo (sin embargo esta ventaja es mayor con mltiples discos que con mltiples particiones) La seguridad puede ser aumentada montando algunas de las particiones en modo slo lectura, nosuid (los setuid bits se ignoran), noexec (los bits de ejecucin se ignoran), etc. Pero, tener mltiples particiones tiene una gran desventaja: si la configuracin no es la adecuada, puede acabar teniendo mucho espacio libre en una de las particiones y quedarse sin espacio en otras. Adems, existe un lmite de 15 particiones para SCSI y SATA. Como ejemplo de un esquema de particionamiento utilizaremos un disco duro de 20 Gb de un porttil para fines de demostracin (incluye servidor web, servidor de correo, gnome, etc.): Ejemplo de particionamiento $ df -h Filesystem Type Size Used Avail Use% /dev/sda5 ext3 509M 132M 351M 28% /dev/sda2 ext3 5.0G 3.0G 1.8G 63% /dev/sda7 ext3 7.9G 6.2G 1.3G 83% /dev/sda8 ext3 1011M 483M 477M 51% /dev/sda9 ext3 2.0G 607M 1.3G 32% /dev/sda1 ext2 51M 17M 31M 36% /dev/sda6 swap 516M 12M 504M 2% (Espacio sin particionar para uso futuro: 2

Mounted on / /home /usr /opt /var /boot Gb)

/usr parece estar bastante llena (83%), pero una vez que todo el software est instalado no tiende a llenarse ms. Aunque asignar unos cuantos gigabytes de espacio a /var puede parecer excesivo, recuerde que Portgae utiliza esta particin por defecto para compilar paquetes. Si se quiere mantener /var de un tamao razonable, cmo 1 GB, necesitar modificar su variable PORTAGE_TMPDIR en /etc/make.conf para que apunte a una particin con espacio libre suficiente para compilar paquetes muy grandes como OpenOffice. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

Utilizando fdisk para particionar su disco Las siguientes instrucciones explican como particionar el disco duro segn el esquema descrito anteriormente: Particin Descripcin /dev/sda1 Particin de arranque (boot) /dev/sda2 Particin de intercambio (swap) /dev/sda3 Particin de raz (root) Cambie el esquema de particionamiento segn su propio criterio. Examinando el Esquema de Particionamiento Actual fdisk es una herramienta potente y bastante popular que permite dividir el disco en particiones. Arranca fdisk sobre tu unidad de disco (en nuestro ejemplo usamos el dispositivo de disco /dev/sda):: Ejecutar fdisk # fdisk /dev/sda Una vez que fdisk est en ejecucin, el programa ofrecer el siguiente smbolo de comandos: Smbolo de espera de rdenes de fdisk Command (m for help): Teclee p para mostrar el esquema de particionamiento actual: Un ejemplo sobre configuracin de particiones Command (m for help): p Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders Units = cylinders of 15120 * 512 bytes Device Boot /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sda9 Start 1 15 50 71 71 210 349 627 905 End 14 49 70 2184 209 348 626 904 2184 Blocks Id 105808+ 264600 158760 15981840 1050808+ 1050808+ 2101648+ 2101648+ 9676768+ System 83 Linux 82 Linux swap 83 Linux 5 Extended 83 Linux 83 Linux 83 Linux 83 Linux 83 Linux Tel 43132484 /2486/2475 [email protected]

25 de Mayo 445 Piso 2 (1002) Bs.As.

Command (m for help):

Este disco en particular est configurado para albergar siete sistemas de ficheros Linux, cada uno con su correspondiente particin con la etiqueta "Linux", as como una particin de intercambio (swap) que aparece con la etiqueta "Linux swap". Eliminacin de todas las Particiones Primero eliminaremos todas las particiones existentes en el disco. Teclee d para eliminar una particin, seguido por intro. Por ejemplo, para borrar una particin existente en /dev/sda1: Eliminar una particin > Command (m for help): d Partition number (1-4): 1 La particin ha sido marcada para su borrado. Ya no aparecer si teclea p, pero no ser eliminada hasta que guarde los cambios realizados. Si comete una equivocacin y desea abortar los cambios realizados, teclee q inmediatamente y pulse intro; las particiones no sern eliminadas. Ahora, asumiendo que intenta eliminar todas las particiones existentes del disco duro, debe teclear p en forma repetida para ver el listado de particiones y pulsar d junto con el nmero de la particin para borrarlas. Finalmente, acabar teniendo una tabla de particiones vaca: Una tabla de particiones vaca Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System

Command (m for help): Ahora que la tabla de particiones en memoria del sistema est vaca, estamos preparados para crear nuevas particiones. Utilizaremos el esquema por defecto, tal como hemos acordado anteriormente. Claro est, que no debe seguir estas instrucciones al pe de la letra si no desea tener una tabla de particiones exactamente igual que la nuestra!

Creacin de una Particin de Arranque En primer lugar debemos crear una pequea particin de arranque. Teclee n para crear esta nueva 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. [email protected]

particin, y luego p para seleccionar una particin primaria, siguiendo por 1 para elegirla como primera particin primaria. Cuando el sistema solicite introducir el primer cilindro, pulse intro y cuando pida definir el valor del ltimo cilindro, teclee +32M para crear una particin de tamao 32 Mb.:: Crear una particin de arranque Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-3876, default 1): (Hit Enter) Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M Si ahora teclea p, debe ver la siguiente particin en la tabla: Una particin creada Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 Start 1 End 14 Blocks 105808+ Id 83 System Linux

Necesitamos hacer que esta particin sea arrancable. Teclee a para marcar esta particin como arrancable. Si introduce p de nuevo, ver que el * ha aparecido en la columna "Boot".

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Creacin de una Particin de Intercambio Vamos a crear ahora la particin de intercambio. Para hacerlo, teclee n para crear una nueva particin, y luego p para comunicar a fdisk que debe ser una particin primaria. Entonces teclee 2 para crear la segunda particin primaria, /dev/sda2 en nuestro caso. Cuando el sistema solicite introducir el valor del primer cilindro, pulse intro y cuando solicite introducir el valor del ltimo, teclee +512M para crear una particin de 512 Mb. Cuando lo haya hecho, teclee t para establecer el tipo de particin, 2 para seleccionar la particin que acaba de crear y entonces 82 para fijar el tipo "Linux Swap". Una vez completados estos pasos la introduccin de p visualizar la tabla de particiones que debe ser similar a sta. Listado de particiones despus de la creacin de la particin de intercambio Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 Start 1 15 End 14 81 Blocks 105808+ 506520 Id 83 82 System Linux Linux swap

Creacin de la Particin de Raz En el ltimo lugar, creamos la particin de raz. Introduzca n para crear la nueva particin, p para marcarla como particin primaria. A continuacin teclee 3 para crear la tercera particin primaria, /dev/sda3, segn nuestro ejemplo. Al solicitar la introduccin del valor del primer cilindro de la particin pulsamos intro, mientras que cuando el sistema solicite que introduzcamos el valor del ltimo cilindro, tambin le damos a intro para crear una particin que ocupe todo el espacio restante en el disco. Tras completar todos estos pasos, introducimos p para ver la tabla de particiones que debe parecer mucho a la siguiente: Listado de particiones despus de crear la particin de raz Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 /dev/sda3 Start 1 15 82 End 14 81 3876 Blocks 105808+ 506520 28690200 Id 83 82 83 System Linux Linux swap Linux Tel 43132484 /2486/2475 [email protected]

25 de Mayo 445 Piso 2 (1002) Bs.As.

Almacenamiento de la Tabla de Particiones Para guardar el esquema de particionamiento y salir del fdisk tecleamos w. Listado de Cdigo 3.10: Guardado y salida del fdisk Command (m for help): w Ahora que las particiones estn creadas, puede proseguir con la Creacin de Sistemas de Ficheros. Creacin de Sistemas de Ficheros Introduccin Ahora que ya tiene creadas las particiones, debe formatearlas para poder tener un sistema de ficheros. Si no le importa el tipo de sistema de ficheros que desee utilizar y est conforme con nuestra eleccin por defecto. Sistemas de ficheros El kernel de Linux soporta varios sistemas de ficheros. Explicaremos ext2, ext3, ResiserFS, XFS y JFS por ser los ms utilizados en sistemas Linux. ext2 es un sistema de ficheros Linux probado, pero no dispone de soporte para transacciones, lo que significa que las comprobaciones rutinarias al arrancar pueden tardar bastante tiempo. Ahora, hay muchas opciones alternativas, sistemas de ficheros de nueva generacin con soporte para transacciones cuya integridad puede ser verificada con mayor rapidez, por lo que gozan de mayor popularidad. Los sistemas de ficheros transaccionales previenen retrasos durante el reinicio del equipo, incluso cuando el sistema de ficheros est en un estado inconsistente. ext3 es la versin transaccional de ext2, que proporciona soporte para una rpida recuperacin adems de otros modos mejorados de funcionamiento como registro completo y ordenado de datos. Utiliza un rbol HTree como ndice que permite un alto rendimiento en casi todas las situaciones. En resumen, ext3 es un buen y fiable sistema de ficheros. JFS de IBM es un sistema de ficheros de alto rendimiento con soporte transaccional. JFS es un sistema de ficheros ligero, rpido y fiable, basado en un rbol B+ con un buen rendimiento bajo varias condiciones. ReiserFS es un sistema de ficheros B+ (basado en rboles balanceados) que tiene un gran rendimiento, especialmente cuando trata con mucho ficheros pequeos a costa de emplear ms ciclos de CPU. ReiserFS parece tener menos mantenimiento que otros sistemas de ficheros. XFS es un sistema de ficheros transaccional el cual viene con un juego de caractersticas robustas y est optimizado para ser escalable. XFS parece ser menos robusto ante fallos hardware. Creacin de Sistema de Ficheros en una Particin 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

Para crear un sistema de ficheros en una particin o volumen existen herramientas especficas para cada sistema de ficheros: Sistema de Ficheros Comando de Creacin ext2 mke2fs ext3 mke2fs -j reiserfs mkreiserfs xfs mkfs.xfs jfs mkfs.jfs Por ejemplo, para formatear la particin de arranque (/dev/sda1 segn el ejemplo) en formato ext2 y la particin de raz (/dev/sda3 segn el ejemplo) en formato ext3, utilizara los siguientes comandos: Creacin de un sistema de ficheros en una particin # mke2fs /dev/sda1 # mke2fs -j /dev/sda3 Y ahora, puede crear sistemas de fichero sobre sus particiones o volmenes lgicos recin creados. Activando la Particin de Intercambio mkswap es el comando usado para inicializar particiones swap: Inicializacin de una particin de intercambio # mkswap /dev/sda2 Para activar la particin, usa el comando swapon: Activacin de una particin de intercambio # swapon /dev/sda2 Crea y activa tu particin de intercambio con los comandos mencionados arriba.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Introduccin

1.6 - Boot Managers

Ahora que su kernel est configurado y compilado y los archivos de configuracin necesarios han sido llenados correctamente, ha llegado la hora de instalar el programa que iniciar el kernel cuando arranque el sistema. Este programa es conocido como gestor de arranque. Para x86, disponemos de GRUB y LILO Pero antes de instalar un gestor de arranque, le informaremos sobre como configurar la memoria de imagen (framebuffer), siempre que usted quiera, claro. Con la memoria de imagen puede ejecutar la lnea de comandos de Linux con algunas caractersticas grficas (limitadas) como, por ejemplo, el empleo de un bonita imagen de Gentoo durante el inicio (bootsplash). Opcional: Memoria de imagen (Framebuffer) Si ha configurado su kernel con soporte framebuffer (o ha utilizado la configuracin predeterminada de genkernel) puede activarlo aadiendo el parmetro vga y/o video al archivo de configuracin del gestor de inicio. Lo primero que necesita es conocer que tipo de dispositivo de framebuffer est utilizando. Si est utilizando un kernel parcheado por Gentoo (como puede ser gentoo-sources) tiene la posibilidad de seleccionar uvesafb como tipo de controlador para vesa (VESA driver), Si este es el caso, est utilizando uvesafb y no necesita el parmetro vga. El parmetro vga controla la resolucin y la profundidad de color de su framebuffer utilizando vesafb. Como se indica en /usr/src/linux/Documentation/fb/vesafb.txt (el cual se instala cuando instalas un paquete con las fuentes del kernel) necesita pasar el nmero VESA correspondiente con la resolucin y profundidad de color que quiera. La siguiente lista muestra las resoluciones y profundidad de color disponibles y su correspondiente valor para el parmetro vga. 640x480 0x301 0x310 0x311 0x312 800x600 0x303 0x313 0x314 0x315 1024x768 0x305 0x316 0x317 0x318 1280x1024 0x307 0x319 0x31A 0x31B

256 32k 64k 16M

El parmetro video controla las opciones de visualizacin. Necesita que se le indique el controlador de framebuffer (vesafb para kernels 2.6, o vesa para kernels 2.4) seguido de los parmetro de control que quiera activar. Todas las variables se pueden encontrar en /usr/src/linux/Documentation/fb/vesafb.txt, pero aqu le informamos sobre las ms utilizadas: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

Control Descripcin Asume que su tarjeta grfica puede volver sobre su memoria. (ej. continuar al principio cuando ywrap se aproxima al final) Configura los registros MTRR. n puede ser: 0 - desactivados 1 - no almacenables en cach mtrr:n 2 - write-back 3 - write-combining 4 - write-through (solamente uvesafb) Configura la resolucin, la profundidad de color y la tasa de refresco. Por ejemplo, mode 1024x768-32@85 para una resolucin de 1024x768, profundidad de color 32 bit y una tasa de refresco de 85 Hz.

El resultado de estas dos configuraciones podra ser algo como: vga=0x318 video=vesafb:mtrr:3,ywrap o video=uvesafb:mtrr:3,ywrap,1024x768-32@85. Recuerde (o anote) sta configuracin. La necesitar dentro de poco.

Usando GRUB Comprendiendo la terminologa de GRUB La parte ms crtica para la comprensin de GRUB, es el habituarse a la manera en que GRUB se refiere a los discos duros y las particiones. Su particin Linux /dev/sda1 es denominada (hd0,0) por GRUB. Note los parntesis alrededor de hd0,0, que son obligatorios. La numeracin de los discos duros comienza con un cero, en lugar de utilizar una "a" y las particiones empiezan con cero en lugar de con un uno. Advertimos tambin que entre los dispositivos hd, slo se cuentan los discos duros y no los dispositivos atapi-ide como cdroms y grabadoras. Adems, la especificacin es igual para dispositivos SCSI. (Usualmente son asignados nmeros mayores, excepto cuando el bios est configurada para arrancar desde los dispositivos scsi). Cuando se le indica la BIOS que arranque desde un disco duro diferente (por ejemplo, el esclavo primario), ese disco duro se ver como hd0. Asumiendo que tiene un disco duro en /dev/sda y dos ms en /dev/sdb y /dev/sdc, la particin /dev/sdd7 que descrita como (hd1,6). A lo mejor puede sonar raro y bien podra serlo, pero como veremos, GRUB ofrece un mecanismo de terminacin por tabulador que es de gran ayuda para los que tienen una gran cantidad de discos duros y que andan algo perdidos con este esquema de numeracin.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Aunque GRUB est instalado, todava necesitamos crear un archivo de configuracin para l e instalar GRUB en nuestro MBR para que pueda arrancar automticamente nuestro kernel recin creado. Cree el archivo /boot/grub/grub.conf con nano, o cualquier otro editor: Creando / modificando el archivo /boot/grub/grub.conf # vi -w /boot/grub/grub.conf Ahora vamos a escribir el grub.conf. A continuacin encontrar dos posibles archivos grub.conf para el ejemplo de particiones que manejamos en esta gua. Slo hemos comentado exhaustivamente el primer grub.conf. Asegrese de utilizar el nombre de su archivo de imagen del kernel y, si es necesario, el nombre de su imagen initrd. El primer grub.conf es para quienes no hayan usado genkernel para construir su kernel El segundo grub.conf es para quienes hayan utilizado genkernel para construir su kernel. Nota: Si su sistema de fichero para root es JFS, deber aadir " ro" a la lnea del kernel ya que JFS necesita leer su log antes de permitir montajes de lectura-escritura.

grub.conf para quienes no hayan usado genkernel # Cual ttulo arrancar por defecto. 0 es el primero, 1 el segundo, etc. default 0 # Cuantos segundos esperar antes de arrancar el ttulo por defecto. timeout 30 # Una bella, hermosa imagen para ensalzar las cosas un poco :) # Comntela si no tiene una tarjeta grfica instalada splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.24-r5 # Particin donde se encuentra la imagen del kernel (o sistema operativo) root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 title Gentoo Linux 2.6.24-r5 (rescate) # Particin donde se encuentra la imagen del kernel (o sistema operativo) root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 init=/bin/bb

# Las siguientes cuatro lneas slo se usan en caso de arranque dual con un sistema W # En este caso, Windows reside en la particin /dev/sda6. title Windows XP rootnoverify (hd0,5) makeactive chainloader +1 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

Nota: El parmetro udev que se menciona al final de la lnea del kernel es necesario para que funcione debido a algunos bugs en algunas versiones de genkernel si se utiliza udev en primera posicin (lo cual, viene definido por defecto).

Si se utiliza un esquema de particiones y/o imagen de kernel distinta, haga los ajustes respectivos. Sin embargo, asegrese que cualquier cosa que siga un dispositivo GRUB (tal como (hd0,0)) sea relativa al punto de montaje y no de la raz. En otras palabras, (hd0,0)/grub/splash.xpm.gz es en realidad /boot/grub/splash.xpm.gz ya que (hd0,0) es /boot. Adems, si se eligi utilizar un esquema de particionamiento diferente y no coloc /boot en una particin separada, el prefijo /boot empleado en los ejemplos anteriores, es realmente necesario. Si ha seguido el plan de particionamiento sugerido, el prefijo /boot no es obligatorio, un enlace simblico /bootlo hace funcionar. En resumen, los ejemplos anteriores deberan funcionar si ha definido una particin separada para /boot o no. Si necesita pasar algn parmetro adicional al kernel, sencillamente agrguelo al final de la lnea de comando del kernel. Ya estamos pasando una opcin (root=/dev/sda3 o real_root=/dev/sda3), pero se pueden pasar otras tambin, como los parmetros video y/o vga de los que hablamos previamente. Si est utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro porque la BIOS no puede manejar discos duros grandes, necesitar aadir sda=stroke. Los usuarios de genkernel deben saber que sus kernels usan las mismas opciones de arranque que el CD de instalacin. Por ejemplo, si tiene dispositivos scsi, debera agregar el parmetro doscsi al kernel. Ahora grabe el archivo grub.conf y salga. An necesita instalar GRUB en el MBR (Master Boot Record) para que GRUB se ejecute automticamente cuando arranque su sistema. Los desarrolladores de GRUB recomiendan utilizar grub-install. Sin embargo, si por alguna razn grubinstall no funciona correctamente todava tiene la opcin de instalar GRUB manualmente.

Configurando GRUB utilizando grub-install Para instalar GRUB necesita ejecutar el comando grub-install. Sin embargo grub-install no funcionar tal cual se instala, ya que estamos dentro de un entorno chroot. Antes de seguir, necesitar actualizar /etc/mtab, el cual contiene la informacin relativa a todos los sistemas de archivos montados. Afortunadamente hay una manera sencilla de realizar esto, simplemente copie /proc/mounts a /etc/mtab, excluyendo la lnea rootfs si no ha creado una particin separada para boot. El siguiente comando fucionar en ambos casos: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

Crear /etc/mtab # grep -v rootfs /proc/mounts > /etc/mtab Ahora podemos instalar GRUB utilizando grub-install: Ejecutar grub-install # grub-install --no-floppy /dev/sda

Alternativa: Configurando GRUB a mano, utilizando instrucciones Para comenzar a configurar GRUB, debe ejecutar los comandos dentro de grub. Se le presentar el intrprete de comandos propio de grub grub>. Ahora necesita ejecutar los comandos necesarios para instalar el registro de arranque de GRUB en su disco duro. Iniciando el intrprete de comandos de GRUB # grub --no-floppy Nota: Si su sistema no tiene ningn dispositivo de disquetes, aada la opcin --no-floppy al comando anterior para evitar que grub pruebe los dispositivos (no existentes) de disquetes. En el ejemplo de configuracin queremos instalar GRUB para que lea la informacin de la particin de arranque /dev/sda1, e instala el registro de arranque de GRUB en el MBR (Master boot Record) de su disco duro para que lo primero que veamos aparecer al encender el ordenador sea GRUB. Por supuesto, si no ha seguido el ejemplo de configuracin durante la instalacin, cambie los comandos de acuerdo a su modelo: El mecanismo de completar comandos por tabulacin de GRUB puede utilizarse dentro de GRUB. Por ejemplo, si escribe "root (" seguido de una tabulacin, notar que se le presenta una lista de dispositivos (como pueda ser hd0). Si tecleamos "root (hd0," seguido de una tabulacin recibiremos una lista de particiones disponibles para elegir (como pueda ser hd0,0). Utilizando este mecanismo de completar por tabulacin, configurar GRUB no debera resultar tan duro. Ahora vamos a por ello, configuremos GRUB!. Instalando GRUB en el MBR grub> root (hd0,0) grub> setup (hd0) grub> quit (Especifique donde tiene su particin /boot) (Instalamos GRUB en el MBR) (Salimos del intrprete de comandos de GRUB)

Nota: Si quiere instalar GRUB en una particin concreta en lugar del MBR, debe modificar el comando 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

setup para que apunte a la particin correcta. Por ejemplo, si quiere que GRUB se instale en /dev/sda3, el comando adecuado sera setup (hd0,2). Sin embargo, pocos usuarios querrn hacer esto.

Alternativa: Utilizando LILO Instalando LILO LILO, representa LInuxLOader, y es el caballito de batalla probado y comprobado de los gestores de inicio de Linux. Sin embargo, carece de algunas caractersticas de GRUB (razn por la cual GRUB actualmente est ganando popularidad). La razn por la cual LILO sigue en uso es que en algunos sistemas, GRUB no funciona mientras que LILO s. Por supuesto tambin se usa porque hay muchos que lo conocen y prefieren seguir con este gestor. De cualquier manera, Gentoo soporta ambos gestores y por lo visto, ha elegido usar LILO. Instalar LILO es fcil, sencillamente se instala Instalando LILO # rpm -i lilo o dpkg -i lilo Configurando LILO Para configurar LILO, debe crear el archivo /etc/lilo.conf. Use su editor de textos preferido (en el manual usamos nano para ser consistentes) y creemos este archivo. Creando /etc/lilo.conf # vi -w /etc/lilo.conf Algunas secciones atrs, le pedimos que se acordara del nombre de la imagen del kernel creado. En el siguiente ejemplo de lilo.conf haremos uso del esquema ejemplo de particionamiento. Hay dos partes separadas: Para los que no hayan usado genkernel para construir su kernel Para los que hayan usado un genkernel para construir su kernel Asegrese de utilizar el nombre de su archivo de imagen del kernel y, si es necesario, el nombre de su imagen initrd. Nota: Si su sistema de ficheros para root es JFS, deber aadir la lnea append="ro" despus de cada 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

elemento de arranque, ya que JFS necesita leer su log antes de permitir montajes de lectura-escritura.

Ejemplo de /etc/lilo.conf boot=/dev/sda prompt timeout=50 default=gentoo

# Instalar LILO en el MBR # Darle al usuario una oportunidad de seleccionar otra opc # Esperar 5 (cinco) segundos antes de arrancar la opcin po # Al transcurrir el plazo de espera, arrancar la opcin "gent

# Para los que no usaron genkernel image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo # El nombre de la seccin read-only # Comience con la raz solo lectura. No modifique! root=/dev/sda3 # Ubicacin del sistema raz de archivos image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo.rescue # El nombre de la seccin read-only # Comience con la raz solo lectura. No modifique! root=/dev/sda3 # Ubicacin del sistema raz de archivos append="init=/bin/bb" # Lanzar la shell esttica de rescate de Gentoo # Para usuarios de genkernel image=/boot/kernel-genkernel-x86-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/ram0 append="init=/linuxrc ramdisk=8192 real_root=/dev/sda3 udev" initrd=/boot/initramfs-genkernel-x86-2.6.24-gentoo-r5 # La siguientes dos lnea solo corresponden si hace arranque dual con un sistema Windows. # En este caso, Windows se encuentra en /dev/sda6. other=/dev/sda6 label=windows Nota: El parmetro udev que se menciona al final de la lnea del kernel es necesario para que funcione debido a algunos bugs en algunas versiones de genkernel si se utiliza udev en primera posicin (lo cual, viene definido por defecto). Nota: Si usa un esquema de particionamiento o imagen de kernel distinta, haga los ajustes correspondientes. Si hace falta pasar alguna opcin adicional al kernel, incluya un enunciado append a la seccin. A modo de ejemplo, agregamos un enunciado video para activar framebuffer: Utilizar append para agregar opciones al kernel 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/sda3 append="video=vesafb:mtrr,ywrap,1024x768-32@85" Si est utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro porque la BIOS no puede manejar discos duros grandes, necesitar aadir sda=stroke. Usuarios de genkernel deben saber que sus kernel usan las mismas opciones de arranque que el CD de instalacin. Por ejemplo, si tiene dispositivos SCSI, debe agregar doscsi como opcin del kernel. Ahora, salve el archivo y salga del editor. Para terminar, debe ejecutar el comando /sbin/lilo para poder aplicar /etc/lilo.conf a su sistema (que se instale en el disco). Acurdese de que debe volver a ejecutar /sbin/lilo cada vez que instale un nuevo kernel o haga cambios en el men. Terminando la instalacin de LILO # /sbin/lilo

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

2. Introduccin al Shell 2.1 - Uso de la lnea de comandos

La consola En Linux es frecuente el uso de la linea de comandos. Esto es as en primer lugar porque el sistema operativo tiene centenares de utilidades a las que no podrs llegar desde el entorno grfico. Y porque la lnea de comandos permite ejecutar programas con mas opciones (y rapidez) de la que tendriamos usando la interfaz grfica. Linux ha sido el sistema de linea de comandos por excelencia, y de hecho hasta hace pocos aos, el arranque del ordenador por defecto era modo consola, arrancando el servidor X (para el entrono grfico) solo cuando necesitabas utilizar un programa que lo requera, con el comando startx. Hoy en dia ocurre justo al revs. Por defecto tu sistema linux arrancar con Gnome o KDE, y para acceder a la linea de comandos debers lanzar desde el men de aplicaciones un emulador de terminal. El prompt del sistema El prompt del sistema es el conjunto de carcteres que te indican la lnea donde debes teclear tus rdenes. Altamente configurable, por defecto es posible que te encuentres con algo parecido a ignacio@localhost:~$ donde te informa que estas logeado en el sistema como usuario ignacio, en la mquina localhost Moviendose por el sistema de archivos El comando pwd nos devuelve la ruta en la que estamos en ese momento. Para cambiar de directorio usamos cd, que tiene varias opciones: cd /path/deseado/ nos lleva a /path/deseado cd. directorio actual cd.. directorio padre cd (sin parametros) lleva al home de tu usuario cd ~ nombreusuario te lleva al home de nombreusuario, si tienes permisos para ello. cd ~ te lleva al home de tu usuario. cd / te lleva al home de tu usuario. cd - te lleva al ultimo directorio en que hallas estado Creando/borrando directorios Para crear nuevos directorios, la opcin es mkdir. Para borrar archivos o rm -r carpeta, usando la opcin -r para borrar cualquier subcarpeta directorios, rm:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Moviendo, renombrando, copiando Usamos cp /ruta/archivo/original /ruta/para/copia para copiar archivos. mv ruta/archivo nueva/ruta/archivo sirve tanto para mover un archivo o carpeta como para renombrarlo listando archivos El comando ls muestra una lista de los archivos de un directorio. ls [opciones] [archivo|directorio] [archivo|directorio...]

ls (sin parametros) lista archivos del directorio actual. ls -a muestra todos los archivos, incluido ocultos ls -A igual que -a menos los archivos "." y ".." ls -R listado recursivo ls -l muestra permisos de cada fichero y ultimo acceso ls -s muestra el tamao de cada fichero listado dot slash ./

Y ya que esto es una breve introduccin a la consola, hhay que recordar que en linux las rutas a los archivos siempre se separan con la barra /, no la invertida propia de windows. Y otra diferencia con windows que a veces pasa desapercibida. Cuando intentamos ejecutar un comando en windows, este siempre busca el ejecutable en primer lugar en el archivo desde el cual se ejecuta la orden, y luego en cualquier otro directorio incluido en el path. Por el contrario linux no buscar el ejecutable en el directorio actual, salvo claro est que dicho directorio est en el path. Por tanto la forma de asegurarnos la correcta ejecucin de cualquier ejecutable, si estamos en el directorio donde se encuentra, es usar un punto y barra para indicar que busque en nuestro directorio: por ejemplo, root@localhost: ignacio/home # ./miscript.sh servira para ejecutar miscript.sh solo si este se encuentra en ignacio/home Y ya que hablamos del path, si quieres ver que rutas tienes en esta variable, simplemente escribe echo $PATH A algunos les resulta de inters que linux busque siempre ejecutables en el directorio actual. Si es tu caso, simplemente ponlo en el path, aadiendo a la variable $PATH un punto: busca en el directorio raiz de tu usuario un archivo oculto .profile y aadele: PATH=$PATH:$HOME/bin:. incluido el punto al final de la linea, claro. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

SU Siempre se ha dicho que la buena prctica en linux es acceder al sistema como usuario con derechos limitados, y ganar los privilegios de root solo cuando nos sea necesario, y ello para evitar ejecutar por error algun comando que se cargue el sistema (y porque linux es un sistema multiusuario, presumiendo que varias personas haran uso de el, y no todas ellas sern administradores). Pues bien, desde tu linea de comandos, logueado como usuario, puedes ganar privilegios de root con el comando su. Por ejemplo, tras la orden [ignacio@localhost] ~ $ sudo kedit /etc/fstab el sistema te preguntar por la contrasea de root, y si es correcta, editar el archivo /etc/fstab con el programa kedit, con permisos de root. sudo permite ejecutar como root solamente la instruccion de la lnea donde se ejecuta. Como alternativa puedes simplemente escribir su, introducir la contrasea y ganar privilegios de root para esa sesion de consola. Fijate como el promt te identifica como root, no solo por el nombre del usuario, sino tambin por el signo # que reemplaza el signo $ Ejecutando tareas en segundo plano Si quieres ejecutar un comando o programa que prevees que va a tardar tiempo en completarse, y no deseas cambiar de terminal, puedes ordenar que se ejecute en segundo plano simplemente aadiendo un carcter & al final de la orden, antes de ejecutarla. Para regresar a cualquier proceso que has dejado en segundo plano, generalmente se utilizan los comandos fg o exit. Comodines prcticamente todas las utilidades que emplean la linea de comandos admiten comodines * ? el comodin ? representa cualquier caracter. Por ejemplo, ls diari?.log te mostraria la existencia tanto de diario.log como de diaria.log Y * coincide con cualquier secuencia de caracteres. ls foto.* te indicaria la existencia de foto.jpg, foto.gif etc

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

2.2 - Variables de entorno

Variables de Entorno? Qu son? Una variable de entorno es un objeto designado para contener informacin usada por una o ms aplicaciones. Algunos usuarios (especialmente aquellos nuevos en Linux) encuentran esto un poco extrao o inmanejable. Sin embargo esto no es cierto: usando variables de entorno hace que cualquiera pueda cambiar una opcin de configuracin para una o ms aplicaciones fcilmente. Ejemplos Importantes La siguiente tabla muestra un listado de variables de entorno usado por un sistema Linux y describe su uso. Los valores de ejemplo se encuentran despus de la tabla. Variable Descripcin Esta variable contiene una lista de directorios separados por ":" en la cual el sistema buscar los archivos ejecutables. Al introducir el nombre de un ejecutable (como ls, rcPATH update o emerge) que no se encuentre en un de los directorios listados, el sistema no lo encontrar, (a menos que se introduzca la ruta completa, por ejemplo: /bin/ls). Esta variable tiene la misma funcin que PATH, pero nicamente contiene los ROOTPATH directorios que el sistema debe revisar cuando el usuario root introduce un comando. Esta variable contiene una lista de directorios separados por ":" en la cual el enlazador LDPATH dinmico busca para encontrar una librera. Esta variable contiene una lista de directorios separados por ":" en la cual el comando MANPATH man busca las pginas de manual. Esta variable contiene una lista de directorios separados por ":" en la cual el comando INFODIR info busca las pginas info. Esta variable contiene la ruta hacia el programa utilizado para mostrar el contenido de PAGER los ficheros (como less o more). Esta variable contiene la ruta hacia el programa utilizado para modificar el contenido de EDITOR los archivos (como nano o vi). Esta variable contiene una lista de directorios separados por ":" los cuales contienen KDEDIRS material especfico de KDE. CONFIG_PROT Esta variable una lista de directorios separados por espacio los cuales deben ser ECT protegidos por Portage durante las actualizaciones. CONFIG_PROT Esta variable una lista de directorios separados por espacio los cuales no deben ser ECT_MASK protegidos por Portage durante las actualizaciones.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

A continuacin puedes encontrar ejemplos de definiciones para todas estas variables: Definiciones de ejemplo PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" MANPATH="/usr/share/man:/usr/local/share/man" INFODIR="/usr/share/info:/usr/local/share/info" PAGER="/usr/bin/less" EDITOR="/usr/bin/vim" KDEDIRS="/usr" CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \ /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \ /usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf" Definiendo variables globalmente El directorio /etc/env.d Para centralizar la definicin de estas variables, Gentoo introduce el directorio /etc/env.d. Dentro de este directorio se encuentran varios ficheros como por ejemplo 00basic, 05gcc, etc. los cuales contienen las variables necesarias para la aplicacin de la cual llevan el nombre. Por ejemplo, al instalar gcc, un fichero llamado 05gcc que contiene la definicin de las siguientes variables, fue creado por el ebuild: /etc/env.d/05gcc PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" Otras distribuciones le piden modificar o aadir definiciones de variables de entorno semejantes en /etc/profile o en otros sitios. Por otro lado, Gentoo nos hace (y a Portage) ms fcil mantener y manejar las variables de entorno sin tener que prestar atencin a los numerosos ficheros que pueden contenerlas. Por ejemplo, cuando gcc es actualizado, tambin es actualizado el fichero /etc/env.d/05gcc sin ser necesaria ninguna interaccin por parte del usuario.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Esto no solo beneficia a Portage, sino tambin al usuario. En ocasiones se podr pedir establecer cierta variable de entorno para todo el sistema. Como ejemplo, tomamos la variable http_proxy. En lugar de perder el tiempo con /etc/profile, puedes crear el fichero (/etc/env.d/99local) y introducir la(s) definicin(es) en l: /etc/env.d/99local http_proxy="proxy.server.com:8080" Usando el mismo fichero para todas las variables, se obtiene una visin rpida de las variables que definidas por uno mismo. El script env-update Varios archivos de /etc/env.d definen la variable PATH. esto no es un error: cuando ejecute env-update, este concatenar las mltiples definiciones antes de actualizar las variables de entorno, haciendo ms fcil a los paquetes (o usuarios) aadir sus propias opciones en las variables de entorno sin interferir con los valores ya existentes. El script env-update concatenar los valores alfabticamente ordenados por el nombre de los ficheros de /etc/env.d. Los nombres de fichero deben comenzar con dos digitos decimales. Update order used by env-update 00basic 99kde-env 99local +-------------+----------------+-------------+ PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin" La concatenacin de variables no siempre funciona, slo con las siguientes variables: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH y PRELINK_PATH_MASK. Para el resto de variables (archivos en orden alfabtico en /etc/env.d)se utilizar el ltimo valor definido Cuando ejecute env-update, el script crear todas las variables de entorno y las colocar en /etc/profile.env (el cual es usado por /etc/profile). Adems, tambin extraer la informacin de la variable LDPATH y la usar para crear /etc/ld.so.conf. Despus de esto, ejecutar ldconfig para recrear el archivo usado por el enlazador dinmico: /etc/ld.so.cache. Si quiere observar el efecto de env-update inmediatamente despus de ejecutarlo, ejecute el siguiente comando para actualizar su entorno. Posiblemente, los usuarios que instalaron Gentoo ellos mismos, recordarn estas instrucciones de la instalacin: Actualizar el entorno # env-update && source /etc/profile Nota: El comando anterior, solamente actualiza las variables en la termanal actual y las nuevas 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. [email protected]

consolas. Conociendo esto, si se esta trabajando en X11, necesitara ejecutar source /etc/profile en cada nueva terminal que abra o reiniciar las X para que todas las nuevas terminales cogan las nuevas variables. Si esta utilizando un gestor de inicio, conviertase en root y ejecute /etc/init.d/xdm restart. Si no, necesitar salir de la sesin y volver a entrar para las X generen hijos con las nuevas variables. Importante: No se pueden utilizar las variables del terminal para definir otras variables. Esto implica que cosas como FOO="$BAR" (donde $BAR es otra variable) estn prohibidas.

Definiendo variables locales Especficas de usuario No siempre queremos definir variables de entorno globales. Por ejemplo, podramos querer aadir /home/my_user/bin y el directorio de trabajo actual (en el cual nos encontramos), a la variable PATH, pero no queremos que todos los usuarios de nuestro sistema lo tengan en su PATH. Si queremos definir una variable localmente, debemos usar ~/.bashrc o ~/.bash_profile: Ampliar el PATH para uso local en: ~/.bashrc (Dos puntos sin incluir despus un directorio son tratados como el directorio de trabajo actual) PATH="${PATH}:/home/my_user/bin:" Cuando vuelva a iniciar la sesin, su variable PATH ser actualizada. Especficas de sesin En ocasiones, se requieren definiciones an ms estrictas. Puede querer usar binarios de un directorio temporal que ha creado sin tener que usar la trayectoria completa a los binarios o sin editar ~/.bashrc. Para estos momentos necesitar esto. En este caso, puede definir la variable PATH en su sesin activa usando el comando export. Mientra no cierre la sesin, la variable PATH usar los valores temporales. Definir una variable especfica a la sesin # export PATH="${PATH}:/home/my_user/tmp/usr/bin"

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

2.3 - Administracin de procesos. Prioridades

La ms simple definicin de un proceso podra ser que es una instancia de un programa en ejecucin (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto de un programa que esta en ejecucin es lo que se llama un proceso. Este contexto puede ser mas procesos hijos que se hayan generado del principal (proceso padre), los recursos del sistema que este consumiendo, sus atributos de seguridad (tales como su propietario y permisos de archivos asi como roles y dems de SELinux), etc. Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que mltiples procesos pueden operar simultneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusin" que es el nico proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo. Programas y procesos son entidades distintas. En un sistema operativo multitarea, mltiples instancias de un programa pueden ejecutarse sumultneamente. Cada instancia es un proceso separado. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habra cinco instancias del mismo programa, es decir, cinco procesos distintos. Cada proceso que se inicia es referenciado con un nmero de identificacin nico conocido como Process ID PID, que es siempre un entero positivo. Prcticamente todo lo que se est ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente grfico que puede tener mltiples procesos, etc. La excepcin a lo anterior es el kernel en si, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a travs de llamadas al sistema pueden tener acceso.

ps El comando ps es el que permite informar sobre el estado de los procesos. ps esta basado en el sistema de archivos /proc, es decir, lee directamente la informacin de los archivos que se encuentran en este directorio. Tiene una gran cantidad de opciones, incluso estas opciones varan dependiendo del estilo en que se use el comando. Estas variaciones sobre el uso de ps son las siguientes: Estilo UNIX, donde las opciones van precedidas por un guin Estilo BSD, donde las opciones no llevan guin Estilo GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guin --

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se mostrarn en el listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las siguientes (y principales): p o PID P o PPID U o UID t o TT o TTY T o TIME c o CMD RSS SZ o SIZE NI C o PCPU STIME S o STAT Process ID, nmero nico o de identificacin del proceso. Parent Process ID, padre del proceso User ID, usuario propietario del proceso Terminal asociada al proceso, si no hay terminal aparece entonces un '?' Tiempo de uso de cpu acumulado por el proceso El nombre del programa o camndo que inici el proceso Resident Sise, tamao de la parte residente en memoria en kilobytes Tamao virtual de la imagen del proceso Nice, valor nice (prioridad) del proceso, un nmero positivo significa menos tiempo de procesador y negativo ms tiempo (-19 a 19) Porcentaje de cpu utilizado por el proceso Starting Time, hora de inicio del proceso Status del proceso, estos pueden ser los siguientes R runnable, en ejecucin, corriendo o ejecutndose S sleeping, proceso en ejecucin pero sin actividad por el momento, o esperando por algn evento para continuar T sTopped, proceso detenido totalmente, pero puede ser reiniciado Z zombie, difunto, proceso que por alguna razn no termin de manera correcta, no debe haber procesos zombies D uninterruptible sleep, son procesos generalmente asociados a acciones de IO del sistema X dead, muerto, proceso terminado pero que sigue apareciendo, igual que los Z no deberan verse nunca

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Las opciones completas de ps las encuentras en las pginas del manual (man ps), o escribiendo en la terminal ps L, y para ver un resumen de sus opciones ms comunes usa ps --help: #> ps --help ********* simple selection ********* ********* selection by list ********* -A all processes -C by command name -N negate selection -G by real group ID (supports names) -a all w/ tty except session leaders -U by real user ID (supports names) -d all except session leaders -g by session OR by effective group name -e all processes -p by process ID T all processes on this terminal -s processes in the sessions given a all w/ tty, including other users -t by tty g OBSOLETE -- DO NOT USE -u by effective user ID (supports names) r only running processes U processes for specified users x processes w/o controlling ttys t by tty *********** output format ********** *********** long options *********** -o,o user-defined -f full --Group --User --pid --cols --ppid -j,j job control s signal --group --user --sid --rows --info -O,O preloaded -o v virtual memory --cumulative --format --deselect -l,l long u user-oriented --sort --tty --forest --version -F extra full X registers --heading --no-heading --context ********* misc options ********* -V,V show version L list format codes f ASCII art forest -m,m,-L,-T,H threads S children in sum -y change -l format -M,Z security data c true command name -c scheduling class -w,w wide output n numeric WCHAN,UID -H process hierarchy A continuacin algunos cuantos ejemplos de ps con la salida recortada. ># ps PID 1 2 3 4 -e TTY ? ? ? ? (-e muestra TIME 00:00:01 00:00:00 00:00:00 00:00:00 todos los procesos) CMD init kthreadd migration/0 ksoftirqd/0 CMD init [5] [kthreadd] su -bash kio_file [kdeinit] ps -ef Tel 43132484 /2486/2475 [email protected]

#> ps -ef (-f muestra opciones completas) UID PID PPID C STIME TTY TIME root 1 0 0 10:12 ? 00:00:01 root 2 0 0 10:12 ? 00:00:00 ... root 6130 5662 0 10:24 pts/0 00:00:00 root 6134 6130 0 10:24 pts/0 00:00:00 sergon 6343 5604 0 10:28 ? 00:00:00 file /home/sergon/tmp/ksocket-sergon/kl root 6475 6134 0 10:38 pts/0 00:00:00 25 de Mayo 445 Piso 2 (1002) Bs.As.

#> ps -eF (-F muestra opciones completas extra) UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 412 556 1 16:59 ? 00:00:01 init [5] root 2 0 0 0 0 1 16:59 ? 00:00:00 [kthreadd] sergon 8326 8321 0 902 1272 0 17:07 ? 00:00:00 /bin/sh /usr/lib/firefox-2.0.0.8/run-mozilla.sh /usr/lib/f sergon 8331 8326 4 53856 62604 0 17:07 ? 00:00:50 /usr/lib/firefox-2.0.0.8/mozilla-firefox-bin sergon 8570 7726 2 15211 37948 0 17:17 ? 00:00:10 quanta #> ps PID 1 2 3 4 ax TTY ? ? ? ? (formato STAT Ss S< S< S< BSD sin guin, a muestra todos, x sin mostrar tty) TIME COMMAND 0:01 init [5] 0:00 [kthreadd] 0:00 [migration/0] 0:00 [ksoftirqd/0] muestra usuarios y dems columnas) TTY STAT START TIME COMMAND ? Ss 16:59 0:01 init [5] ? S< 16:59 0:00 [kthreadd] ? S< 16:59 0:00 ? ? S< S< 16:59 16:59 0:00 0:00

#> ps aux (formato BSD sin guin, u USER PID %CPU %MEM VSZ RSS root 1 0.0 0.0 1648 556 root 2 0.0 0.0 0 0 root 3 0.0 0.0 0 0 [migration/0] root 4 0.0 0.0 0 0 [ksoftirqd/0] root 5 0.0 0.0 0 0 [migration/1] #> ps -eo separados USER root root sergon root #> ps #> ps #> ps real) #> ps #> ps -eH axf -ec -el L

user,pid,tty (-o output personalizado, se indican los campos por coma, ver ps --help o ps L) PID TT 1 ? 2 ? 8570 tty 1 8876 pts/1 (muestra rbol de procesos) (lo mismo en formato BSD) (el comando que se esta ejecutando, sin la ruta, solo el nombre (muestra formato largo de varias columnas, muy prctico) (No muestra procesos, lista todos los cdigos de formatos)

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

pstree Muestra los procesos en forma de rbol, pstree --help te da las opciones ms comunes. Recomiendo uses lo uses con la opcin -A y -G para que te un rbol con lneas con lneas estilo ASCII y de terminal VT100 respectivamente, puedes aadir tambin -u para mostrar entre parntesis al usuario propietario del proceso: #> pstree -AGu init---acpid |-atd(daemon) |-automount----2*[{automount}] |-avahi-daemon(avahi) |-beagled(sergon)----7*[{beagled}] |-beagled-helper(sergio)----3*[{beagled-helper}] |-compiz(sergon)----kde-window-deco |-console-kit-dae----61*[{console-kit-dae}] |-crond |-dbus-daemon(messagebus) |-dbus-daemon(sergio) |-dbus-launch(sergio) |-dcopserver(sergio) |-dhclient |-gam_server(sergio) |-gconfd-2(sergio) |-hald(haldaemon)----hald-runner(root)----hald-addon-acpi(haldaemon) | |-hald-addon-cpuf | |-hald-addon-inpu | |-hald-addon-stor |-httpd---8*[httpd(apache)] |-2*[ifplugd] |-ipw3945d |-kaccess(sergio) ...

kill El comando kill, que literalmente quiere decir matar, sirve no solo para matar o terminar procesos sino principalmente para enviar seales (signals) a los procesos. La seal por default (cuando no se indica 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

ninguna es terminar o matar el proceso), y la sintaxis es kill PID, siendo PID el nmero de ID del proceso. Asi por ejemplo, es posible enviar una seal de STOP al proceso y se detendr su ejecucin, despus cuando se quiera mandar una seal de CONTinuar y el proceso continuara desde donde se quedo. #> kill -l (lista todas las proceso) 1) SIGHUP 2) SIGINT 5) SIGTRAP 6) SIGABRT 9) SIGKILL 10) SIGUSR1 13) SIGPIPE 14) SIGALRM 17) SIGCHLD 18) SIGCONT 21) SIGTTIN 22) SIGTTOU 25) SIGXFSZ 26) SIGVTALRM 29) SIGIO 30) SIGPWR 35) SIGRTMIN+1 36) SIGRTMIN+2 39) SIGRTMIN+5 40) SIGRTMIN+6 43) SIGRTMIN+9 44) SIGRTMIN+10 47) SIGRTMIN+13 48) SIGRTMIN+14 51) SIGRTMAX-13 52) SIGRTMAX-12 55) SIGRTMAX-9 56) SIGRTMAX-8 59) SIGRTMAX-5 60) SIGRTMAX-4 63) SIGRTMAX-1 64) SIGRTMAX posibles seales que pueden enviarse a un 3) 7) 11) 15) 19) 23) 27) 31) 37) 41) 45) 49) 53) 57) 61) SIGQUIT SIGBUS SIGSEGV SIGTERM SIGSTOP SIGURG SIGPROF SIGSYS SIGRTMIN+3 SIGRTMIN+7 SIGRTMIN+11 SIGRTMIN+15 SIGRTMAX-11 SIGRTMAX-7 SIGRTMAX-3 4) 8) 12) 16) 20) 24) 28) 34) 38) 42) 46) 50) 54) 58) 62) SIGILL SIGFPE SIGUSR2 SIGSTKFLT SIGTSTP SIGXCPU SIGWINCH SIGRTMIN SIGRTMIN+4 SIGRTMIN+8 SIGRTMIN+12 SIGRTMAX-14 SIGRTMAX-10 SIGRTMAX-6 SIGRTMAX-2

La lista previa presenta una lista de todas las posibles seales que pueden mandarse a un proceso y estas pueden ser invocadas a travs del nmero de la seal o de su cdigo, por ejemplo: #> kill -9 11428 #> kill -SIGKILL 11428 (termina, mata un proceso completamente) (Lo mismo que lo anterior)

Las seales ms comunes son la 19 y 20 que detienen momentneamente la ejecucin de un proceso o programa, 18 la continua, 1 que es la seal de hang up que obliga al proceso a releer sus archivos de configuracin estando en ejecucin y 9 que termina rotundamente un proceso.

killall El comando killall, que funciona de manera similar a kill, pero con la diferencia de en vez de indicar un PID se indica el nombre del programa, lo que afectar a todos los procesos que tengan ese nombre. Asi por ejemplo si se tienen varias instancias ejecutndose del proxy server squid, con killall squid eliminar todos los procesos que se esten ejecutando con el nombre 'squid' #> killall -l #> killall -HUP httpd archivos de configuracin #> killall -KILL -i squid pero pide confirmacin en 25 de Mayo 445 Piso 2 (1002) Bs.As. (lista de posibles seales) (manda una seal de "colgar", detenerse releer sus y reiniciar) (manda seal de matar a todos los procesos squid cada uno) Tel 43132484 /2486/2475 [email protected]

nice Permite cambiar la prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad igual ante el CPU que es de 0. Con nice es posible iniciar un programa (proceso) con la prioridad modificada, ms alta o ms baja segn se requiera. Las prioridades van de -20 (la ms alta) a 19 la ms baja. Solo root o el superusuario puede establecer prioridades negativas que son ms altas. Con la opcin -l de ps es posible observar la columna NI que muestra este valor. #> nice (sin argumentos, devuelve la prioridad por defecto ) 0 #> nice -n -5 comando (inicia comando con una prioridad de -5, lo que le da ms tiempo de cpu)

renice Asi como nice establece la prioridad de un proceso cuando se incia su ejecucin, renice permite alterarla en tiempo real, sin necesidad de detener el proceso. #> nice -n -5 yes (se ejecuta el programa 'yes' con prioridad -5) (dejar ejecutando 'yes' y en otra terminal se analiza con C PRI 4 75 NI ADDR SZ WCHAN TTY -5 708 write_ pts/2 TIME CMD 00:00:00 yes

'ps') #> ps -el F S UID PID PPID 4 S 0 12826 12208

#> renice 7 12826 12826: prioridad antigua -5, nueva prioridad 7 #> ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY 4 S 0 12826 12208 4 87 7 708 write_ pts/2

TIME CMD 00:00:15 yes

(obsrvese el campo NI en el primer caso en -5, y en el segundo con renice qued en 7, en tiempo real) nohup y & Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comando nohup o el operador &. Aunque realizan una funcin similar, no son lo mismo. Si se desea liberar la terminal de un programa que se espera durar un tiempo considerable ejecutndose, entonces se usa . Esto funciona mejor cuando el resultado del proceso no es necesario mandarlo a la salida estndar (stdin), como por ejemplo cuando se ejecuta un respaldo o se abre un programa Xwindow desde la consola o terminal. Para lograr esto basta con escribir el comando en cuestin y agregar al final el smbolo & (ampersand). 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

$> yes > /dev/null & $> tar czf respaldo /documentos/* > /dev/null/ & $> konqueror & (con estos ejemplos se ejecuta el comando y se libera la terminal regresando el prompt) Sin embargo lo anterior produce que el padre del proceso PPID que se invoc con sea el proceso de la terminal en si, por lo que si cerramos la terminal o salimos de la sesin tambin se terminaran los procesos hijos que dependan de la terminal, no muy conveniente si se desea que el proceso continu en ejecucin. Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que '&' mandar el proceso y background y que este quede inmune a los hangups (de ah su nombre nohup) que es cuando se cuelga o termina la terminal o consola de la cual se ejecut el proceso. $> nohup yes > /dev/null & $> nohup czf respaldo /documentos/* > /dev/null/ $> nohup konqueror Asi se evita que el proceso se "cuelgue" al cerrar la consola. jobs Si por ejemplo, se tiene acceso a una nica consola o terminal, y se tienen que ejecutar varios comandos que se ejecutarn por largo tiempo, se pueden entonces como ya se vi previamente con nohup y el operador '&' mandarlos a segundo plano o background con el objeto de liberar la terminal y continuar trabajando. Pero si solo se est en una terminal esto puede ser difcil de controlar, y para eos tenemos el comando jobs que lista los procesos actuales en ejecucin: #> yes > /dev/null & [1] 26837 #> ls -laR > archivos.txt & [2] 26854 #> jobs [1]- Running [2]+ Running

yes >/dev/null & ls --color=tty -laR / >archivos.txt &

En el ejemplo previo, se ejecut el comando yes y se envi a background (&) y el sistema devolvi [1] 26837, indicando asi que se trata del trabajo o de la tarea [1] y su PID, lo mismo con la segunda tarea que es un listado recursivo desde la raz y enviado a un archivo, esta es la segunda tarea. Con los comandos fg (foreground) y bg background es posible manipular procesos que esten suspendidos temporalmente, ya sea porque se les envi una seal de suspensin como STOP (20) o porque al estarlos ejecutando se presion ctrl-Z. Entonces para reanudar su ejecucin en primer plano usaramos fg: #> jobs 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

[1]- Stopped [2]+ Stopped #> fg %1 #> jobs [1]+ Running [2]- Stopped

yes >/dev/null & ls --color=tty -laR / >archivos.txt & yes >/dev/null & ls --color=tty -laR / >archivos.txt &

Obsrvese como al traer en primer plano al 'job' o proceso 1, este adquiri el smbolo [+] que indica que esta al frente. Lo mismo sera con bg que volvera a reinicar el proceso pero en segundo plano. Y tambin es posible matar los procesos con kill indicando el nmero que devuelve jobs: kill %1, terminara con el proceso en jobs nmero 1.

top Una utilera muy usada y muy til para el monitoreo en tiempo real del estado de los procesos y de otras variantes del sistema es el programa llamado top, se ejecuta desde la lnea de comandos, es interactivo y por defecto se actualiza cada 3 segundos. $> top top - 13:07:30 up 8 days, 6:44, 4 users, load average: 0.11, 0.08, 0.08 Tasks: 133 total, 1 running, 131 sleeping, 0 stopped, 1 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 497356k total, 472352k used, 25004k free, 21500k buffers Swap: 1156640k total, 257088k used, 899552k free, 60420k cached PID 26156 1 2 3 4 5 ... USER sergon root root root root root PR 15 15 RT 34 RT RT NI 0 0 0 19 0 0 VIRT RES 2160 1016 2012 616 0 0 0 0 0 0 0 0 SHR 784 584 0 0 0 0 S %CPU %MEM R 1 0.2 S 0 0.1 S 0 0.0 S 0 0.0 S 0 0.0 S 0 0.0 TIME+ 0:00.93 0:00.98 0:00.29 0:00.00 0:00.00 0:00.38 COMMAND top init migration/0 ksoftirqd/0 watchdog/0 migration/1

Estando adentro de la apliacin, presionando 'h' muestra una ayuda de los posibles comandos que permiten configurar top, por ejemplo, al presionar 's' pregunta por el tiempo en segundos de actualizacin, etc.

Archivos: Tipos La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de informacin, desde una imagen en formato PNG o JPEG a un texto o una pgina WEB 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

en formato HTML, El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene. Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas: Un nombre de archivo puede tener entre 1 y 255 caracteres. Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre del fichero entre comillas. Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas y minsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt carta.Txt Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de ficheros empleando una serie de caracteres al final del nombre que indiquen el tipo de fichero del que se trata. As, los ficheros de texto, HTML, las imgenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente. Pese a esto Linux slo distingue tres tipos de archivos: Archivos o ficheros ordinarios, son los mencionados anteriormente. Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma estructurada. Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir informacin en ese archivo equivale a enviar informacin a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. Enlaces Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simblico ste permite acceder al fichero que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro fichero, con la ventaja de que este realmente no se ha copiado. Los enlaces simblicos son especialmente tiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero pero centralizan las modificaciones. Como ejemplo se puede suponer la existencia de un fichero llamado balance.1999.txt, al que se crea un enlace simblico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt. El camino o Path 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

En cualquier sistema operativo moderno la estructura de archivos es jerrquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows cada unidad de disco se identifica como una carpeta bsica que sirve de raz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una nica raz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de qu dispositivos estn conectados al ordenador. El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de archivos de la Figura 2.

Existen dos formas del path o camino: el camino absoluto que muestra toda la ruta a un fichero, /home/luis/Carta.txt. el path relativo a un determinado directorio, por ejemplo si no encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt Para complicar aun ms las cosas, todos los directorios contienen dos directorios especiales: Figura 2 =El directorio actual, representado por el punto . =El directorio padre representado por dos puntos .. Estando en el directorio /home/pedro se puede acceder a Carta.txt con /home/luis/Carta.txt (path absoluto) o bien ../luis/Carta.txt (path relativo). En luis como ./Carta.txt o simplemente Carta.txt. Estructura del sistema de archivos de Linux El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homognea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no est ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:, d: o m:. Todos el sistema de archivos de Unix tiene un origen nico la raz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misin y nombre son estndar para todos los sistema Unix. / Raz del sistema de archivos. /dev Contiene ficheros del sistema representando los dispositivos que estn fsicamente instalados en el ordenador. /etc Este directorio esta reservado para los ficheros de configuracin del sistema. En este directorio no debe aparecer ningn fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios: Tel 43132484 /2486/2475 [email protected]

25 de Mayo 445 Piso 2 (1002) Bs.As.

/etc/X11 Ficheros de configuracin de X Window /etc/skel Ficheros de configuracin bsica que son copiados al directorio del usuario cuando se crea uno nuevo. /lib Contiene las libreras necesarias para que se ejecuten los programas que residen en /bin (no las libreras de los programas de los usuarios). /proc Contiene ficheros especiales que o bien reciben o envan informacin al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus ficheros). /sbin Contiene programas que son nicamente accesibles al superusuario o root. /usr Este es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente: /usr/X11R6 Contiene los programas para ejecutar X Window. /usr/bin Programas de uso general, lo que incluye el compilador de C/C++. /usr/doc Documentacin general del sistema.

/usr/etc Ficheros de configuracin generales. /usr/include Ficheros de cabecera de C/C++ (.h). /usr/info Ficheros de informacin de GNU. /usr/lib Libreras generales de los programas. /usr/man Manuales accesibles con el comando man (ver ms adelante). /usr/sbin Programas de administracin del sistema. /usr/src Cdigo fuente de programas.

Existen adems de los anteriores otros directorios que se suelen localizar en el directorio /usr, como por ejemplo las carpetas de los programas que se instalen en el sistema. /var Este directorio contiene informacin temporal de los programas (lo cual no implica que se pueda borrar su contenido, de hecho, no se debe hacer!)

Acceso a los diferentes sistemas de archivos Como se ha visto anteriormente el sistema de archivos de Linux slo tiene una raz y su estructura es independiente de los dispositivos de almacenamiento existentes. Esto implica que el procedimiento a emplear para acceder a la informacin almacenada en los distintos sistemas de almacenamiento de un ordenador no es tan sencilla como en Windows, y requiere un proceso llamado montado, que se ver ms adelante. Cuando se ha terminado de trabajar con un determinado dispositivo hay que desmontarlo (No fsicamente!). Por ejemplo el proceso para leer un disquete sera el siguiente: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 [email protected]

1. Introducir el disquete en la disquetera. 2. Montar el sistema de archivos del mismo. 3. Leer, grabar, y manipular el contenido del disquete. 4. Desmontar el sistema de archivos del disquete. 5. Extraer el disquete de la disquetera. El proceso puede parecer complejo pero es el precio a pagar por la seguridad, puesto que de esta forma se garantiza que no exista ninguna aplicacin que est usando el disquete cuando se extraiga. (En el caso de los CD-ROM Linux impide su extraccin hasta que se desmonta). Para complicar ms las cosas slo el administrador o root tiene permiso para montar y desmontar un sistema de archivos (por motivos de seguridad), aunque esto puede ser arreglado. Permisos Linux, al igual que todos los sistemas Unix, mantiene un sistema de permisos de acceso a los ficheros muy estricto, a fin de controlar qu es lo que se puede hacer con ellos, y quien lo puede hacer. Estos permisos se identifican con letras y son: r permiso de lectura el fichero w permiso de escritura en el fichero x permiso de ejecucin del fichero s permiso para cambiar el propietario del fichero Al contrario que en Windows o MS-DOS los programas ejecutables de Linux no estn marcados por una determinada extensin (.exe) sino por un atributo, el permiso de ejecucin x. Si se elimina este atributo a un programa, Linux no ser capaz de ejecutarlo. A su vez cada uno de estos permisos se aplica: al dueo del fichero (u), al grupo de usuarios al que pertenece el dueo (g), al resto de usuarios (a). As un fichero determinado puede tener permiso para ser ledo, escrito y ejecutado por su dueo, ledo y ejecutado por el grupo al que pertenece y no tener ningn tipo de acceso para los dems usuarios. Como se puede entender este tipo de mecanismo es especialmente til cuando se trabaja en grupo en un determinado proyecto.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 [email protected]

Instalacin de SoftwareAntes de continuar, es indispensable se conozca primero el uso y el porque de cada mtodo existente para el manejo del software. De esto se depender en adelante para mantener un saludable estado de cualquier sistema Linux. Indistintamente del mtodo, todos se deber de realizar desde la cuenta de root, as que proceda con cuidado.

3.1 - Red Hat Package Manager

Manejo de paquetes a partir de archivos RPM

El formato RPM es el ms utilizado en la actualidad. Tiene como ventaja principal el encargarse de verificar las posibles dependencias o requisitos para la instalacin o actualizacin de un paquete en particular, as como tambin el verificar si el paquete que se proceder a desinstalar es requerido por otros paquetes presentes en el sistema. Analizaremos entonces el uso del comando rpm. Existen dos aplicaciones en el entorno grfico que utilizan rpm en el trasfondo y que son de muy fcil utilizacin, son gnorpm y kpackage. Sin embargo es importante que el usuario novicio se familiarice con este comando para poder entender el funcionamiento de las mencionadas aplicaciones en el entorno grfico. Sintxis rpm -[opciones] paquete.rpm Nos limitaremos a abordar solo las opciones ms comnes que un nuevo usuario de Linux podra necesitar. Si desea ver una descripcin completa de las posibles opciones del comando rpm, consulte el manual escribiendo man rpm en cualquier terminal o consola. Instalacin binarios contenidos en paquetes con formato RPM. Los paquetes de este tipo son programas previamente compilados, almacenados y listos para ser instalados en el sistema. Estos paquetes pueden tener las extensiones .i386.rpm para PC compatible con al menos un microprocesador 80386, es decir, cualquier PC de arquitectura Intel o compatible, .i486.rpm para PC compatible un microprocesador 80486, .i586.rpm para PC compatible con microprocesador 80586, .i686.rpm para PC compatible con microprocesador 80686, .ppc.rpm para Machintosh PowerPC o .noarch.rpm que puede utilizarse en cualquier arquitectura. En la prctica, no se preocupe por encontrar paquetes i686 para su PC con microprocesador Intel Pentium III, puede instalar con total seguridad los paquetes para i386. Los paquetes noarch generalmente contiene archivos de texto -guiones para diversas funciones, archivos d