Sistemas Operativos y una introducción a los sistemas Unix/Linux Moises E. Ramı́rez 1 Universidad Tecnológica de la Mixteca Huajuapan de León, Oaxaca México http://mixteco.utm.mx/˜merg/ [email protected] August 20, 2007 1 tel. +34-95353 20399 ext 200 Contents 1 Introducción 3 2 Historia 5 3 Sistemas operativos 3.1 Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Interfaz con el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 4 Casos especiales de sistemas operativos y 4.1 Intérprete de comandos . . . . . . . . . . 4.2 Interfaz gráfica . . . . . . . . . . . . . . . 4.3 DOS: Disk Operating System . . . . . . . 4.4 Mac OS . . . . . . . . . . . . . . . . . . . 4.5 Microsoft Windows . . . . . . . . . . . . . 4.6 Unix . . . . . . . . . . . . . . . . . . . . . 4.7 Linux . . . . . . . . . . . . . . . . . . . . 4.7.1 Caracterı́sticas de Linux . . . . . . 4.7.2 GNOME . . . . . . . . . . . . . . 4.7.3 KDE . . . . . . . . . . . . . . . . . 4.7.4 Xfce . . . . . . . . . . . . . . . . . 4.7.5 Enlightenment . . . . . . . . . . . sus entornos de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 11 11 12 13 14 16 17 18 19 19 5 Entorno de consola básico en Linux 5.1 Estructura de directorios y archivos 5.2 Instrucciones básicas . . . . . . . . . 5.2.1 pwd . . . . . . . . . . . . . . 5.2.2 ls . . . . . . . . . . . . . . . . 5.2.3 man . . . . . . . . . . . . . . 5.2.4 mkdir . . . . . . . . . . . . . 5.2.5 rmdir . . . . . . . . . . . . . 5.2.6 cd . . . . . . . . . . . . . . . 5.2.7 tree . . . . . . . . . . . . . . 5.2.8 date . . . . . . . . . . . . . . 5.2.9 rm . . . . . . . . . . . . . . . 5.2.10 mv . . . . . . . . . . . . . . . 5.2.11 top . . . . . . . . . . . . . . . 5.2.12 ps . . . . . . . . . . . . . . . 5.2.13 kill . . . . . . . . . . . . . . . 5.2.14 grep . . . . . . . . . . . . . . 5.2.15 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 23 23 23 25 25 25 26 26 27 27 27 28 30 30 31 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.16 5.2.17 5.2.18 5.2.19 5.2.20 6 less . . . ssh . . . login . . logout . passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Preguntas y ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 33 33 33 33 35 2 Chapter 1 Introducción Una computadora sin software no presta ninguna utilidad, es sólo un conjunto de metal, silicio, equipo de comunicaciones y material magnético. Son los programas los que hacen que la computadora sea algo útil a sus usuarios. Aplicaciones hay muchas, desde procesadores de texto, compiladores e incluso herramientas para crear sistemas operativos. El software puede clasificarse en dos grandes grupos: + Programas de sistema (software de base, software de sistema): controlan la operación de la computadora. + Programas de aplicación (software de aplicación): resuelven problemas para los usuarios. El Sistema Operativo es el programa fundamental entre los programas de sistemas; controla todos los recursos de la computadora y proporciona la base sobre la que pueden escribirse los programas de aplicación. Es un nivel de software por encima del hardware que controla todas las partes del sistema y presenta al usuario una interfaz o máquina virtual que es más fácil de programar que accionar en forma directa sobre el hardware subyacente. En este sentido se dice que el sistema operativo ”define un ambiente de trabajo”. Como controlador de recursos. Permite la asignación ordenada de procesadores, memoria y dispositivos de entrada/salida para los varios programas que compiten por el uso de estos recursos evitando que al momento de operar la computadora el usuario o programar aplicaciones tenga que considerar todas estas tareas. En un sistema de computación se reconocen los siguientes niveles, partiendo desde el usuario hacia la máquina fı́sica: + Programas de aplicación: Sistema bancario, Reservaciones aéreas, Juegos. + Compiladores, Editores, Intérprete de comandos. + Sistema operativo. Unix (o UNIX) es un sistema operativo portable, multitarea y multiusuario; desarrollado en principio por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy. Hoy dı́a, la palabra UNIX se utiliza para denotar diferentes conceptos dependiendo del contexto en que es usada. Esto suele dar lugar a confusiones: + UNIX – familia: desde el punto de vista técnico, UNIX se refiere a una familia de sistemas operativos que comparten unos criterios de diseño e interoperabilidad en común. Esta familia incluye más de 100 sistemas operativos desarrollados a lo largo de 20 años. No obstante, es importante señalar que esta definición no implica necesariamente que dichos sistemas operativos compartan código o cualquier propiedad intelectual. 3 + UNIX – el sistema operativo original: desde el punto de vista histórico, UNIX se refiere a la subfamilia de sistemas operativos que descienden de la primera implementación original de AT&T. El término ”descendencia” ha de interpretarse como trabajos derivativos que comparten propiedad intelectual con la implementación original. 4 Chapter 2 Historia • En la época de los bulbos (o tuvos de vacı́o) y conexiones. Se programaba en lenguaje de máquina absoluto, o realizando directamente las conexiones eléctricas. Alrededor de 1950 se introducen las tarjetas perforadas. • En la época de los transistores surgieron los sistemas de procesamiento por lotes: Los programas y datos se entregaban en tarjetas, se acumulaban y luego eran procesados todos juntos por la máquina, buscando minimizar los tiempos muertos. • En la época de los circuitos integrados y multiprogramación. El sistema 360 de IBM unifica computadoras comerciales y cientı́ficas en una sola lı́nea de máquinas con software compatible. Se introduce la multiprogramación, que divide la memoria en partes y ejecuta un programa distinto en cada una. El spooling permite la operación simultánea y en lı́nea de periféricos. El tiempo compartido es una variante de multiprogramación que habilita a cada usuario una terminal en lı́nea. Los laboratorios Bell de AT&T, la empresa General Electric y el MIT (Instituto de Tecnologı́a de Massachusetts) formaron un equipo de investigación que desarrolló el sistema operativo denominado MULTICS (Multiplexed Information and Comptuting System). El sistema MULTICS fue abandonado por que era un sistema lento y requerı́a mucha memoria para operar. Ken Thompson (AT&T) y Dennis Ritchie utilizando algunos de los conceptos usados para el desarrollo de MULTICS se unieron para desarrollar un ambiente más comodo y simple para desarrollar programas. El nuevo sistema operativo se escribio para la computadora DEC PDP–7 y recibió el nombre de UNICS (Multiplexed Information and Computing System que luego pasó a ser UNIX. El código de UNIX fue escrito en el lenguaje de programación C, lo cual fue totalmente novedoso ya que todos los sistemas operativos hasta la época eran escritos en lenguaje ensamblador. El lenguaje ensamblador en cada máquina en esas epocas tenı́a diferencias. El realizar el sistema operativo en lenguaje C permitio que fuera facilmente transportable a otras plataformas. De esta manera habia que desarrollar el compilador C para cada plataforma (tarea mucho más sencilla que un sistema operativo completo), y después compilarlo para dicha plataforma. • En la época de la integración a gran escala, surgen las estaciones de trabajo y computadoras personales. El sistema operativo DOS aparece en escena siendo éste y posteriormente Windows lo que llevó a Microsoft a ser la empresa por referencia de software. El Software ”amigable con el usuario” hace su aparición con el concepto de ventanas intoducido por Xerox y comercializado por Apple inicialmente. Aparecen sistemas operativos de red, con varias computadoras interconectadas que pueden ser accedidas por un mismo usuario y sistemas operativos distribuı́dos, compuestos por varios procesadores que se presentan al usuario como un sistema único. 5 En 1991, un estudiante de ciencias de la computación llamado Linus Torvalds desarrolló un núcleo o kernel para ordenadores con arquitectura de procesador Intel x86 que contenı́a muchas de las funcionalidades de UNIX y lo lanzó en forma de código abierto bajo el nombre de Linux. En 1992, el núcleo Linux fue combinado con los programas desarrollados por el Proyecto GNU, dando como resultado el Sistema Operativo GNU/Linux. 6 Chapter 3 Sistemas operativos Es el programa más importante que se ejecuta sobre la computadora. Cualquier computadora de propósito general debe tener un SO para poder ejecutar programas. Los SO realizan tareas básicas como reconocimiento de la entrada de datos desde el teclado, enviar datos a la pantalla, la administración de los archivos y directorios almacenados en las unidades de disco duro y el control de los dispositivos periféricos como impresoras, scanners, unidades de almacenamiento externas, entre otros. Para sistemas muy grandes tienen todavı́a más responsabilidades y tareas. Su labor es como la de un policı́a de tránsito, se asegura que todos los programas y usuarios obtengan los recursos que necesitan e interactúen sin que unos intervengan con las actividades de otros. El SO también es responsable de la seguridad, se asegura de que usuarios no autorizados no accesen al sistema. 3.1 Clasificación Los SO proveen una plataforma para que otros programas (llamados aplicaciones) puedan ejecutarse. La elección del sistema operativo determina las aplicaciones que pueden ejecutarse en cierto momento. • Multiusuario: Permite que dos o más usuarios ejecuten programas al mismo tiempo. Varios SO’s permiten cientos o hasta miles de usuarios. • Multiprocesamiento: Soporta la ejecución de un mismo programa en más de un procesador. • Multitarea: Permite que más de un programa se ejecute a la vez. • Multihilo: Permite que diferentes partes de un mismo programa se ejecuten al mismo tiempo. • Tiempo real: Responde a los datos de entrada instantáneamente. 3.1.1 Interfaz con el usuario El usuario normalmente interactúa con el SO a través de un conjunto de comandos, por ejemplo en DOS, Linux y Unix se puede crear una carpeta usando el comando MKDIR o mover archivos de un lugar a otro usando MOVE. Los comandos son aceptados y ejecutados por el sistema operativo a través de una aplicación llamada intérprete de lı́nea de comandos. Las interfaces gráficas (GUI) permiten la ejecución de los mismos comandos más fácilmente, haciendo clic y ejecutando acciones sobre algunos menús (sin necesidad de memorizar los comandos) ejemplos de estos son: las diferentes versiones de Windows (a partir de win’95), las nuevas versiones de Linux como Mandriva, Gentoo, Debian, Fedora, Ubuntu o las Mac. 7 Chapter 4 Casos especiales de sistemas operativos y sus entornos de trabajo El sistema operativo unix fue la piedra a partir de la cual surgieron muchos otros sistemas operativos. En sus inicios en este sistema operativo se trabajaba en modo texto. Posteriormente para hacer más fácil la operación de estos sistemas surgieron las interfaces gráficas de usuario (Graphic User Interface). En esta sección se mostrarán algunos entornos de trabajo en modo texto y gráfico. Posteriormente los sistemas operativos más importantes, y en el caso de linux los entornos de trabajo más comunes. 4.1 Intérprete de comandos Intérprete de comandos, Terminal, Consola o Shell es un programa que actúa como Interfaz de usuario para comunicar al usuario con el sistema operativo mediante una ventana que espera comandos textuales ingresados por el usuario en el teclado, los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuación, la shell queda esperando más instrucciones. Se interactúa con la información de la manera más simple posible, sin gráficas, solo el texto crudo. Existen para diversos sistemas operativos, diversos tipos de hardware, con diferente funcionalidad. Suelen incorporar caracterı́sticas tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiónes). Es posible que un sistema operativo tenga varios intérpretes de comandos. En el caso de Linux está el Korn shell, Basic Shell, C Shell, entre otros (ver figura 4.1). Casi cualquier programa puede diseñarse para ofrecer al usuario alguna clase de Intérprete de comandos. Por ejemplo, casi todos los juegos de PC en primera persona tienen un Intérprete de comandos incorporada, utilizada para diagnostico y labores administrativas. Su contraparte es la Interfaz gráfica de usuario que ofrece una estética mejorada a costa de mayor consumo de recursos computacionales, una mayor vulnerabilidad por complejidad y , en general, una reducción en la funcionalidad ofrecida. 4.2 Interfaz gráfica En el proceso de interacción persona-computadora, la interfaz gráfica de usuario, es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático. La interfaz gráfica de usuario (en inglés Graphical User Interface, GUI) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles 8 Figure 4.1: Bash shell sobre entorno Unix/Linux en la interfaz. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora. Surge como evolución de la lı́nea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Ejemplos de interfaz gráfica son los llamados ”Desktop” o ”escritorios” de trabajo del sistema operativo Windows y Linux. 4.3 DOS: Disk Operating System DOS es una familia de sistemas operativos para PC. El nombre son las siglas de Disk Operating System (sistema operativo de disco). Fue creado originalmente para computadoras de la familia IBM PC, que utilizaban los procesadores Intel 8086/8088 de 16 bits, siendo el primer sistema operativo popular para esta plataforma. El intérprete de ordenes se llamaba command.com. En las versiones de Windows modernas, (véase Windows NT, 2000, 2003, XP o Vista) MS-DOS dejó de llamarse ası́ para convertirse en Sı́mbolo del Sistema, que se ejecutaba mediante cmd.exe Existen varias versiones de DOS. El más conocido de ellos es el MS-DOS (figura 4.2, de Microsoft (de ahı́ las iniciales MS). Otros sistemas son el PC-DOS, DR-DOS y, más recientemente, el FreeDOS. Con la aparición de los sistemas operativos gráficos, del tipo Windows, el DOS ha ido quedando relegado a un segundo plano. El DOS carece por completo de interfaz gráfica, y no utiliza el mouse. Era incapaz de detectar el hardware (no existı́a el Plug-and-play), por lo que todo debı́a ser configurado manualmente. No era ni multiusuario ni multitarea. No podı́a trabajar con discos duros muy grandes. Originalmente, por limitaciones del software, no podı́a manejar más de 64KB de memoria RAM. 9 C:\>dir Volume in drive C has no label Volume Serial Number is 1234-5678 Directory of C:\ SETUP <DIR> 01-21-96 9:06p TMP <DIR> 01-21-96 4:01p COMMAND COM 93,890 01-21-96 10:22p WINDOWS <DIR> 01-21-96 8:42p CONFIG SYS 122 01-31-03 11:50p PROGRA~1 <DIR> 01-21-96 6:26p MYDOCU~1 <DIR> 01-21-96 9:00p . . . . . . . . . . . . AUTOEXEC BAT 1,150 07-26-03 1:03a 10 file(s) 12,056,573 bytes 12 dir(s) 1,214.84 MB free Figure 4.2: Ejemplo de entorno MS-DOS 4.4 Mac OS Mac OS, abreviatura de Macintosh Operating System (Sistema Operativo de Macintosh), es el nombre del primer sistema operativo de Apple para los ordenadores Macintosh. El Mac OS original fue el primer sistema operativo con una interfaz gráfica de usuario en tener éxito, figura 4.3. Apple quitó importancia de forma deliberada a la existencia del sistema operativo en los primeros años de Macintosh para ayudar a hacer que la máquina pareciera más agradable al usuario y a distanciarla de otros sistemas como MS-DOS, que eran un desafı́o técnico. Apple querı́a que Macintosh fuera visto como un sistema que trabajara nada más con encenderlo (fácil). Figure 4.3: Screenshot del entorno gráfico Mac OS X Fueron introducidas al mercado en 1984, con caracterı́sticas como: interfaz gráfica (GUI) usando ventanas, ı́conos y un ratón para hacerla relativamente fácil para inexpertos y ası́ comenzar a usar la computadora 10 más rápidamente para generar productividad. La interfaz gráfica es con la finalidad de evitar el aprendizaje de comandos, de esta forma solamente se apunta sobre el ı́cono y se hace un clic con el ratón para ejecutar alguna acción. La interfaz gráfica está embebida en el sistema operativo, esto significa que todas las aplicaciones que corran sobre una computadora Macintosh tienen una interfaz similar. una vez que un usuario se ha familiarizado con una aplicación, aprenderá nuevas aplicaciones más rápidamente. El éxito de la GUI de Macintosh fue el inicio de una nueva era de aplicaciones y sistemas operativos basados en interfaces gráficas. La interfaz de Windwos copia muchas de las caracterı́sticas de la Mac, figura 4.3. Hay muchos modelos diferentes de Macintosh, con diferentes grados de rápidez y poder. Todos los modelos están disponibles en diferentes configuraciones. 4.5 Microsoft Windows Microsoft Windows (conocido simplemente como Windows) es un sistema operativo con interfaz gráfica para computadoras personales cuyo propietario es la empresa Microsoft. Las distintas versiones de Windows, las cuales ofrecen un entorno gráfico amigable y sencillo, principalmente desde la versión Windows 95, ha convertido en Windows en el sistema operativo más utilizado en el mundo. Debido a ello la mayorı́a de las empresas fabricantes de hardware y software en el mundo tienden a desarrollar sus aplicaciones basadas en dicho sistema. Es una familia de Sistemas Operativos para computadoras personales. Windows domina el mercado mundial de las computadoras personales, según algunas estimaciones está en un 90% de todas las computadoras personales. Del restante 10% la mayorı́a son computadoras Apple. Igual que el entorno de las computadoras Macintosh, Windows provee interfaz gráfica (GUI), administración de memoria virtual, multitareas y soporte para una gran variedad de dispositivos periféricos. 4.6 Unix El sistema operativo Unix es ampliamente utilizado en estaciones de trabajo y serivores. El entorno Unix y el modelo cliente-servidor fueron los elementos escenciales para el desarrollo de Internet, ası́ las aplicaciones para computadoras comenzaron a orientarse a las redes. UNIX fue uno de los primeros sistemas operativos que fueron escritos en un lenguaje de alto nivel (lenguje C). Esto significa que podı́a ser instalado en virtualmente cualquier computadora en el que existtiera un compilador de C. Esta portabilidad natural, combinada a su bajo costo lo convirtió en una de las elecciones más populares entre las universidades. En realidad no era caro porque los laboratorios Bell prohibı́an su comercio a gran escala. Debido a esta portabilidad Unix se convirtió rápidamente en el sistema operativo lı́der para los equipos de cómputo cientı́fico. El lenguaje C y Unix fueron desarrollados por AT&T y distribuidos a instituciones académicas y gubernamentales ocasionando la portabilidad a una variedad de familias de computadoras más grande que cualquier otro sistema operativo. Unix fue diseñado para ser portable, multitareas y multiusuario en una configuración de tiempo compartido. Unix maneja los dispositivos y ciertos procesos de comunicación como archivos, eso significa que para leer datos del teclado, por ejemplo, se leen datos de un archivo que lo representa. El kernel o núcleo del sistema es un programa principal de control . Provee servicios para iniciar y detener programas, administra el sistema de archivos y otras tareas de bajo nivel y controla y planifica el acceso a los recursos de hardware para evitar conflictos cuando dos o más programas quieren accesarlos simultáneamente. Las Implementaciones más importantes de Unix son: • Solaris de Sun Microsystems. Uno de los sistemas operativos Unix más difundido en el entorno empresarial y conocido por su gran estabilidad, ver figura 4.4. • AIX de IBM. 11 • HP-UX de Hewlett-Packard. Figure 4.4: Screenshot del entorno gráfico de Solaris 10 4.7 Linux Linux es uno de los paradigmas más prominentes del software libre y del desarrollo del código abierto, cuyo código fuente está disponible públicamente, para que cualquier persona puede libremente usarlo, estudiarlo, redistribuirlo y, con los conocimientos informáticos adecuados, modificarlo. Los primeros sistemas Linux se originaron en 1992, al combinar utilidades de sistema y librerı́as del proyecto GNU con el núcleo Linux, completando un sistema también conocido como GNU/Linux. Desde fines de 1990 Linux ha obtenido el apoyo de diversas empresas multinacionales del mundo de la informática, tales como IBM, Sun Microsystems, Hewlett-Packard y Novell. Si bien Linux es usado como sistema operativo en computadores de escritorio (PCs x86 y x86-64 ası́ como Macintosh y PowerPC), computadores de bolsillo, teléfonos celulares, dispositivos empotrados y otros, su mayor desarrollo se ha llevado a cabo en el mundo de los servidores y supercomputadores. Existen numerosas distribuciones Linux (también conocidas como ”distros”), ensambladas por individuos, empresas y otros organismos. Cada distribución puede incluir cualquier número de software adicional, incluyendo software que facilite la instalación del sistema. La base del software incluido con cada distribución incluye el núcleo Linux y las herramientas GNU, al que suelen adicionarse también varios paquetes de software. Entre las distribuciones más importantes de Linux están: • Red Hat, Fedora • SuSE Linux de Novell. • Mandrake, Mandriva • Slackware • Debian, Ubuntu, Xubuntu, Kubuntu 12 Figure 4.5: Entorno gráfico X-Window de Unix Las herramientas que suelen incluirse en la distribución de este sistema operativo se obtienen de diversas fuentes, incluyendo de manera importante proyectos de código abierto o libre, como el GNU y el BSD o el KDE. Debido a que las herramientas de software libre que en primera instancia volvieron funcional al núcleo de Linux provienen del proyecto GNU que desde 1983 habı́a liberado software que pudo ser usado en el proyecto de Linux de 1991, Richard Stallman (fundador del proyecto GNU) pide a los usuarios que se refieran a dicho sistema como GNU/Linux. Linux en la actualidad es un sistema operativo fácil de instalar, tan solo basta con descargar la imagen iso de una distribución como Debian, SuSE, Ubuntu o YellowDog (la mayorı́a son gratuitas) y grabarla en un CD o DVD. Existen versiones linux para máquinas x86 (abarca desde computadoras 386, pentium I, celeron, hasta pentium IV), también para 64 bits (los nuevos procesadores, aunque también trabajan con linux para x86), y para procesadores PowerPc (ppc) de las computadoras Apple Macintosh. El resto es tan fácil como instalar Windows, incluso algunas distrubiciones permiten entrar al escritorio linux sin necesidad de instalar el sistema operativo (desde el CD), para luego usarlo o instalarlo desde el escritorio.Estas versiones son también llamadas Live, del inglés ”en vivo”. Con la adopción por numerosas empresas fabricantes de PCs, muchas computadoras son vendidas con distribuciones GNU/Linux pre-instaladas, y ”GNU/Linux” ha comenzado a tomar su lugar en el vasto mercado de las computadoras de escritorio. Con entornos de escritorio, ”GNU/Linux” ofrece una interfaz gráfica alternativa a la tradicional interfaz de lı́nea de comandos de Unix. Existen en la actualidad numerosas aplicaciones gráficas, ya sean libres o no, que ofrecen funcionalidad que está permitiendo que GNU/Linux se adapte como herramienta de escritorio. Entre los entornos más populares están: Gnome, KDE y en menos parte Xfce, Enlightenment, BlackBox y Ratpoison. 4.7.1 • Caracterı́sticas de Linux Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo 13 tiempo. LINUX utiliza la llamada multitarea preeventiva, la cual asegura que todos los programas que se estan utilizando en un momento dado seran ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa. • Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo. • Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II,Amiga y Atari, tambien existen versiones para su utilizacion en otras plataformas, como Alpha, ARM,MIPS, PowerPC y SPARC. • Multiprocesador: Soporte para sistemas con mas de un procesador esta disponible para Intel y SPARC. • Protección de la memoria entre procesos , de manera que uno de ellos no pueda colgar el sistema • Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente. • Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito. 4.7.2 GNOME GNOME (GNU Network Object Model Environment) es un esfuerzo multinacional para construir un entorno de escritorio completo, amigable y fácil de utilizar. Esto incluye crear entornos de desarrollo de software, programas para el manejo del escritorio, manejo de archivos y manejo de ventanas, entre otros, ver figura 4.6 y 4.7. Figure 4.6: Screenshot del entorno gráfico GNOME sobre Linux El proyecto GNOME surgió en agosto de 1997 como proyecto liderado por los mexicanos Miguel de Icaza y Federico Mena para crear un entorno de escritorio completamente libre para sistemas operativos libres, en especial para GNU/Linux. 14 Figure 4.7: Screenshot del entorno gráfico GNOME sobre Linux Como con la mayorı́a de los programas GNU, GNOME ha sido diseñado para ejecutarse en toda la gama de sistemas operativos de tipo Unix con X Window, y especialmente pensado para GNU/Linux. Desde sus inicios se ha utilizado la biblioteca de controles gráficos GTK, originalmente desarrollada para el programa The GIMP. A medida que el proyecto ha ido progresando en los últimos años, los objetivos del mismo se han extendido para tratar una serie de problemas en la infraestructura Unix existente. 4.7.3 KDE KDE (acrónimo del inglés K Desktop Environment, Entorno de Escritorio K) es un entorno de escritorio gráfico e infraestructura de desarrollo para sistemas Unix y, en particular, Linux. KDE es distribuido junto a muchas distribuciones Linux, ver figura 4.8. De acuerdo con su página web, ”KDE es un entorno gráfico contemporáneo para estaciones de trabajo Unix. KDE llena la necesidad de un escritorio amigable para estaciones de trabajo Unix, similar a los escritorios de MacOS o Windows”. 4.7.4 Xfce Xfce (éxfeis) es un entorno de escritorio ligero para sistemas tipo Unix como Linux, BSD, Solaris y derivados. Se configura ı́ntegramente con el ratón. Su creador, Olivier Fourdan, dice de él: ”Diseñado para la productividad, se carga y ejecuta aplicaciones rápido, mientras conserva recursos de sistema”, ver figura 4.9. Xfce también provee el marco de trabajo para el desarrollo de aplicaciones. Además de Xfce mismo, hay otros programas que también utilizan las bibliotecas de Xfce, como el editor de texto Mousepad, el reproductor multimedia Xfmedia o el emulador de consola Terminal. 4.7.5 Enlightenment Enlightenment, también conocido simplemente como E, es un ligero gestor de ventanas para UNIX y GNU/Linux. Uno de sus objetivos es llegar a ser un entorno de escritorio completo, figura 4.10. Es muy 15 Figure 4.8: Screenshot del entorno gráfico KDE sobre Linux configurable y visualmente es muy atractivo. Durante un tiempo fue el gestor de ventanas de GNOME. Puede ser usado solo o en conjunción con otros entornos de escritorio como GNOME o KDE. Tiene una variedad muy grande de temas y gráficos desarrollados pensando en el rendimiento del sistema. 16 Figure 4.9: Screenshot del entorno gráfico Xfce sobre Linux Figure 4.10: Screenshot del entorno gráfico KDE sobre Linux 17 Chapter 5 Entorno de consola básico en Linux Estos ejemplos han sido ejecutados bajo el entorno Gnome/Ubuntu, pero en general se aplican al resto de la familia Linux/Unix. 5.1 Estructura de directorios y archivos Los directorios más importantes donde hay datos y programas para la configuración, administración y uso general del sistema son: • / Directorio Raı́z (root) Es el punto de inicio de la estructura de directorios. Aqui es donde el sistema inicia. Cualquier directorio dentro del sistema, estará siempre dentro del directorio root. En general no se recomienda almacenar archivos en este directorio. También es importante notar que existe un usuario denominado root, éste es el usuario con mayores privilegios dentro del sistema. • /boot Directorio de arranque Aquı́ se almacena la información necesaria para iniciar o arrancar ( bootear ) el sistema. Dentro de este directorio está almacenado el Kernel y el gestor de arranque (en caso de equipos con más de un sistema operativo instalado). • /etc Directorio de configuracion Aquı́ se almacenan los archivos de configuración del sistema. La mayor parte son archivos que pueden ser editados a mano, entre ellos están: – /etc/inittab o /etc/init.d: contiene los procesos que serán lanzados al momento de arrancar el sistema durante la operación normal. Por ejemplo, se puede configurar si se arrancará en modo texto o modo gráfico, o si arrancará el servidor de correos, ftp, etc. de forma automática o manual. – /etc/fsstab: describe la información sobre los diferentes sistemas de archivos en el sistema, sus puntos de montaje y si se harán de forma automática o manual. Entre los dispositivos a montar están los discos duros o particiones de ellos, floppies, cdroms, dispositivos usb, etc. – /etc/passwd: contiene información para cada cuenta de usuario • /bin, /usr/bin Contienen la mayor parte de los comandos y programas para el uso del sistema. /bin contiene los programas más básicos pero importantes del sistema tales como shells, ls, grep, entre otros. /usr/bin contiene aplicaciones generales para el sistema. 18 • /sbin, /usr/sbin Están almacenados la mayor parte de los programas de administración, la mayor parte de ellos sólo pueden ser ejecutados por usuarios con privilegios como root. • /usr Contiene aplicaciones de usuario, codigos fuente, imágenes, documentacion de ayuda, o archivos de configuración genéricos. Entre los directorios más interesantes están: – /usr/doc – /usr/share – /usr/src – /usr/include – /usr/X11R6 – /usr/local • /lib Almacena las librerias compartidas para que los programas puedan ser ejecutados de manera dinámica. • /home Contiene los archivos personales de cada usuario del sistema. Cada usuario tiene su directorio personal dentro de /home y es el sitio donde normalmente todos los usuarios pueden escribir información dentro del sistema. Es posible configurar el sistema de tal forma que los usuarios no puedan ver los archivos de otros usuarios. También se pueden crear grupos de trabajo donde sı́ se puedan compartir información. • /root Es el directorio home del super usuario root. • /var Contiene información variable que cambia constantemente mientras el sistema está en funcionamiento. Entre las principales cosas contiene los directorios: – /var/log Contiene los archivos de reportes (log files), mismos que son actualizados mientras el sistema se ejecuta, contiene información sobre el status del sistema. En caso de que algo vaya mal, se generan archivos de reporte para conocer las causas del problema. – /var/mail El correo que va saliendo o entrando para cada usuario del sistema se almacena aquı́. – /var/spool contiene los archivos que son encolados para algunos procesos, el más común las impresiones. • /tmp Se usa como almacenamiento temporal de los programas que necesitan escribir datos. • /dev Los dispositivos del sistema son tratados como archivos (ejm, discos duros, floppies, etc) al escribir/leer sobre los archivos en realidad se están enviando o recibiendo datos de dichos dispositivos. Por ejemplo /dev/cdrom es el archivo que representa la unidad de CD-ROM. • /mnt Para poder utilizar cada dispositivo, deben ser ”montados” en algun directorio antes de poder tener acceso a ellos. En general este directorio contiene los puntos de montaje para cada dispositivo. 5.2 Instrucciones básicas Nota: en los siguientes ejemplos el sı́mbolo $ indica el sı́mbolo del sistema (prompt). 19 5.2.1 pwd pwd muestra la ruta absoluta con respecto al directorio raı́z en que se encuentra actualmente o directorio de trabajo actual. $ pwd /home/moy $ pwd /home/moy/public\_html 5.2.2 ls El comando ls muestra los archivos y directorios dentro de una ruta especificada, al no especificar una ruta por default es el direcorio en donde se encuentra. $ ls acm adress.html amsn_received basura configuracion Desktop download eclipse Firefox_wallpaper.png poem.txt~ Projects public_html wkSpace work workspace El comando ls -l muestra los archivos y directorios en formato largo. En el formato largo aparecen indicadores de si es un directorio, los permisos (r=read, w=write, x= execute), el dueño del archivo, el grupo al que pertenece, el tamaño del archivo en bytes, fecha de última modificación y el nombre del archivo. $ ls -l total 1088 drwxr-xr-x 3 moy moy 4096 2007-08-05 09:07 acm -rw-r--r-- 1 moy moy 188674 2007-01-29 12:25 adress.html drwx------ 14 moy moy 4096 2007-08-08 18:10 amsn_received drwxr-xr-x 4 moy moy 4096 2007-08-06 10:21 basura drwxr-xr-x 4 moy moy 4096 2007-06-05 11:28 configuracion drwxr-xr-x 7 moy moy 4096 2007-08-15 11:40 Desktop El comando ls -al genera la lista en formato largo -l pero además muestra los archivos que empiezan con el carácter . Los directorios . y .. significan “el directorio de trabajo actual” y el “directorio de trabajo inmediatamente un nivel inferior”, y la utilidad es para saber entre otras cosas quien los creó y los permisos de los mismos. $ ls -al total 3052 drwxr-xr-x 98 moy moy drwxr-xr-x 7 root root drwx------ 2 moy moy drwxr-xr-x 3 moy moy drwxr-xr-x 3 moy moy -rw-r--r-- 1 moy moy drwx------ 2 moy moy drwxr-xr-x 2 moy moy 8192 4096 4096 4096 4096 188674 4096 4096 2007-08-17 2007-02-01 2006-02-20 2007-08-05 2006-01-27 2007-01-29 2006-01-26 2007-07-02 17:09 17:24 17:13 09:07 16:24 12:25 11:58 22:31 . .. .3ddesktop acm .adobe adress.html .alsaplayer .anjuta Otras posibles opciones son: -t y -s, ordenamiento por fecha y tamaño respectivamente. -h muestra los tamaños en K (Kilobytes), M (Megabytes) y G (Gigabytes) respectivamente. La opción -R muestra los directorios y archivos de forma recursiva. 20 $ ls -lh total 3,0M -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx -rwxrwxrwx 5.2.3 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root 22K 653K 40K 99K 105K 106K 812K 163K 71K 679K 208K 2007-08-16 2007-08-17 2007-08-16 2007-08-16 2007-08-16 2007-08-16 2007-08-16 2007-08-16 2007-08-16 2007-08-16 2007-08-16 12:11 11:29 12:11 17:23 12:01 11:55 18:56 18:56 18:55 12:00 12:41 Bash_screenshot.png enlightenment.png GNOME-escritorio.png gnome.png KDE_logo.png KDE.png OSX-01.png Solaris10.png tux.png xfce.png Xwindow.png man La opción man muestra ayuda sobre una orden especificada. Por ejemplo: man ls muestra el manual de la instrucción ls. Para buscar palabras se usa el comando /palabra donde palabra es la expresión o palabra a buscar. Para salir de la ayuda escribir q 5.2.4 mkdir mkdir permite crear carpetas (directorios) dentro de la ruta especificada, si sólo escribe el nombre del directorio, la ruta especificada por default es la ruta actual. Ejemplo: mkdir computadora el comando mkdir no arroja ningún mensaje en caso de éxito, para comprobar la creación de la carpeta use el comando ls u otro equivalente. Para crear una carpeta dentro de computadora, se puede especificar la ruta usando el separador de directorios / Supongamos que se quiere crear la siguiente estructura de carpetas: computadora/ |-- entrada |-- memoria |-- procesador |-- salida la secuencia de creación de dichas carpetas serı́a: $ $ $ $ $ mkdir mkdir mkdir mkdir mkdir 5.2.5 computadora computadora/entrada computadora/memoria computadora/procesador computadora/salida rmdir rmdir permite eliminar carpetas vacı́as dentro de la ruta especificada. Ejemplo: rmdir computadora 21 5.2.6 cd cd cambia de la carpeta actual a una especificada, si no se especifica ninguna, la ruta destino será el directorio home. $ pwd % para saber donde se est\’a /media/datos/prope/ $ cd computadora $ cd salida $ pwd /media/datos/computadora/salida algunos casos especiales cd .. cd . cd / cd /home/alumnos/ cd cd ~ / cd ~ /computadora 5.2.7 son: baja un nivel en la estructura de directorios. se cambia al directorio actual (no hace nada) se cambia al directorio raı́z del sistema se cambia al directorio /home/alumnos se cambia al directorio HOME se cambia al directorio HOME se cambia al directorio computadora que está dentro de HOME tree tree es un programa que lista recursivamente los directorios y archivos de forma indentada. $ tree . ‘-- computadora |-- entrada | |-- raton.txt | ‘-- teclado.txt |-- memoria |-- procesador ‘-- salida |-- impresora.txt ‘-- pantalla.txt Figure 5.1: uso del comando tree -d -a -r -h -s -t -L num 5.2.8 solo muestra directorios imprime todos los archivos orden alfabético inverso muestra el tamaño en formato humano orden por tamaño orden de tiempo muestra hasta el nivel num de profundidad del árbol date date muestra o establece la fecha y hora actual del sistema. $ date lun ago 20 10:04:12 CEST 2007 22 5.2.9 rm rm permite eliminar archivos y/o directorios dentro de la ruta especificada. El comando rm -r debe ser usado con precaución ya que permite eliminar de manera recursiva un directorio y sus correspondientes subdirectorios. Los ejemplos serán usando la estructura de la figura 5.1 como referencia. Para eliminar el archivo raton.txt $ rm computadora/entrada/raton.txt Otra forma de hacer lo mismo, es entrar al directorio computadora/entrada y de ahı́ eliminar el archivo. $ cd $ rm computadora/entrada raton.txt el comando rm permite eliminar también mas de un archivo en una sola lı́nea, sólo hay q especificar $ cd $ rm computadora/entrada raton.txt teclado.txt Usar rmdir para eliminar el directorio entrada ocasionarı́a un error porque al menos hay un archivo dentro del directorio. Una forma de eliminar dicho directorio con todo su contenido es usar el modo recursivo. $ cd $ rm computadora -r entrada 5.2.10 mv mv permite mover un archivo o directorio de una carpeta a otra o renombrar carpetas y archivos. Nuevamente basados en la estructura de la figura 5.1. Si se quiere cambiar el nombre del directorio procesador a procesamiento, la orden serı́a: $ cd $ mv computadora %entra al directorio computadora procesador procesamiento si en vez de pantalla.txt se quiere lcd.txt, serı́a: $ cd $ mv salida pantalla.txt %entra al directorio salida lcd.txt en caso de que se quiera mover la carpeta salida y ponerla dentro del directorio memoria: $ cd $ mv .. salida 5.2.11 %retorno un nivel memoria top top proporciona una visión continua de la actividad del procesador en tiempo real. Muestra un listado de las tareas que hacen un uso más intensivo de la CPU en el sistema, y puede proporcionar una interfaz interactiva para manipular procesos. Puede clasificar las tareas por empleo de CPU, uso de memoria y tiempo de ejecución. La mayorı́a de las caracterı́sticas pueden seleccionarse mediante una orden interactiva o especificándola en el fichero de configuración personal o general. La pantalla se actualiza cada 5 segundos de forma predeterminada, pero esto se puede cambiar con la opción de la lı́nea de órdenes d o la orden interactiva s. Una pantalla de salida del comando está en la figura: Algunos de los datos más importantes son: 23 Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie Cpu(s): 7.6%us, 1.2%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 1262436k total, 1140556k used, 121880k free, 224608k buffers Swap: 0k total, 0k used, 0k free, 580092k cached PID 5000 5554 5537 6255 6378 2124 5381 5540 5670 6539 1 2 3 4 5 6 USER root moy moy moy moy root root moy moy moy root root root root root root PR 16 15 15 15 15 10 31 16 15 18 15 34 RT 10 10 10 NI 0 0 0 0 0 -5 15 0 0 0 0 19 0 -5 -5 -5 VIRT 238m 46940 18500 66732 134m 0 3212 65804 34880 2316 2776 0 0 0 0 0 RES SHR S %CPU %MEM 39m 10m S 2.9 3.2 8972 5800 S 2.9 0.7 11m 8148 S 0.7 0.9 17m 10m S 0.5 1.4 99m 13m S 0.5 8.0 0 0 S 0.2 0.0 1816 812 S 0.2 0.1 25m 16m S 0.2 2.0 10m 7824 S 0.2 0.9 1172 888 R 0.2 0.1 1668 524 S 0.0 0.1 0 0 S 0.0 0.0 0 0 S 0.0 0.0 0 0 S 0.0 0.0 0 0 S 0.0 0.0 0 0 S 0.0 0.0 TIME+ 2:04.06 1:49.69 0:19.96 0:02.57 0:34.64 0:02.04 0:09.60 0:13.37 0:01.54 0:01.00 0:01.39 0:00.01 0:00.00 0:00.09 0:00.00 0:00.00 COMMAND Xorg xmms metacity gnome-terminal evince ata/0 preload gnome-panel notification-da top init ksoftirqd/0 watchdog/0 events/0 khelper kthread Figure 5.2: uso del comando top • uptime Esta lı́nea muestra el tiempo que el sistema ha estado activo, y las tres medias de carga para el sistema. Las medias de carga son el número medio de procesos listos para ejecutarse durante los últimos 1, 5 y 15 minutos. La lı́nea de uptime puede quitarse o ponerse con la orden interactiva l (ele minúscula). • processes El número total de procesos ejecutándose cuando la última actualización. Este número también se divide en el número de tareas que están ejecutándose, durmiendo, paradas o no-muertas. Las lı́neas de procesos y estados pueden quitarse o ponerse con la orden interactiva t. • CPU states Muestra el porcentaje de tiempo de CPU en modo de usuario, en modo de sistema , en tareas con la prioridad alterada por nice, y el tiempo de inactividad. (Las tareas con la prioridad alterada por nice son solamente aquéllas cuyo valor nice es negativo.) El tiempo transcurrido en las tareas con la prioridad alterada por nice también se contará en el tiempo de sistema y de usuario, ası́ que el total será superior al 100%. Las lı́neas de procesos y estados y tiempos de CPU pueden quitarse o ponerse con la orden interactiva t. • Mem Datos sobre el empleo de memoria, incluyendo la memoria disponible en total, la memoria libre, la usada, la compartida, y la utilizada para búferes. La lı́nea de la información de memoria puede ponerse o quitarse con la orden interactiva m. • Swap Datos sobre el espacio de intercambio, incluyendo el total, el disponible y el empleado. Swap y Mem son sencillamente como la salida de free. • PID El identificador (ID) de proceso (PID) de cada tarea. • PPID El ID del proceso padre de cada tarea. • UID El ID de usuario del propietario de la tarea. 24 • USER El nombre de usuario del propietario de la tarea. • PRI La prioridad de la tarea. • NI El valor de nice de la tarea. Valores negativos indican menor prioridad. • SIZE Se muestra aquı́ el tamaño del código de la tarea más datos más espacio de pila, en kB. • TSIZE El tamaño del texto o código de la tarea. • DSIZE Tamaño de Datos + Pila. • SWAP Tamaño de la parte de la tarea que está en el espacio de intercambio. • RSS Se muestra aquı́ la cantidad total de memoria fı́sica utilizada por la tarea, en kilobytes. • SHARE Se muestra en esta columna la cantidad de memoria compartida empleada por la tarea. • STAT Aquı́ se ve el estado de la tarea. El estado puede ser S para durmiente, D para sueño no interrumpible, R para ejecución, Z para zombies, o T para parados o trazados. Estos estados se modifican por un ¡ al final para procesos con valor de nice negativo, N para un proceso con valor de nice positivo, o W para un proceso en espacio de intercambio (esto no funciona correctamente para procesos del núcleo). • TIME El tiempo total de CPU que la tarea ha usado desde que empezó. Si el modo acumulativo está activado, también incluye el tiempo de CPU empleado por los hijos del proceso que hayan muerto. Uno puede establecer el modo acumulativo con la opción de la lı́nea de órdenes S o cambiarlo con la orden interactiva S. La lı́nea de cabecera se cambiará entonces a CTIME. • %CPU La porción del tiempo de CPU consumido por la tarea desde la última actualización de la pantalla, expresada como un porcentaje del tiempo de CPU total. • %MEM La porción de la memoria fı́sica ocupada por la tarea. • COMMAND El nombre de la orden de la tarea, que se truncará si es demasiado largo como para mostrarse en una lı́nea. Las tareas en memoria tendrán una lı́nea de órdenes completa, pero las que estén en espacio de intercambio solamente tendrán el nombre del programa entre paréntesis 5.2.12 ps ps muestra una instantánea de los procesos actuales. Para actualización continua se debe usar el comando top. algunas opciones interesantes son: -u usuario muestra los procesos que está ejecutando “usuario“ -l imprime los datos en formato largo -m muestra información de memoria -x muestra procesos que no están controlados por ninguna terminal -a muestra también los procesos de otros usuarios -r sólo procesos que se están ejecutando la figura 5.3 muestra una salida en formato largo para el usuario “usario”. 5.2.13 kill kill envia señales a procesos. La señal por default es TERM (terminar). La aplicación que más comunmente se le da es para terminar procesos, la forma de hacerlo es escribir el comando kill -9 NUM PROCESO. Algunos ejemplos son: $ kill -9 -1 %mata todos los procesos que puede matar el usuario $ kill -9 5215 5317 % mata los procesos 5215 y 5217 25 $ ps -l -u usuario F 4 1 1 1 1 0 1 0 0 0 0 0 S S S S S S S S S S S S S UID 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 PID 5215 5511 5512 5515 5516 5518 5521 5523 5532 5533 5537 5539 PPID 4997 5215 5215 1 1 1 1 1 1 5532 5215 5215 C PRI 0 76 0 75 0 75 0 78 0 75 0 75 0 78 0 75 0 77 0 75 0 75 0 75 NI 0 0 0 0 0 0 0 0 0 0 0 0 ADDR SZ - 7750 - 1063 - 1064 666 711 - 1874 689 - 7572 428 - 1253 - 4625 - 22044 WCHAN wait - TTY ? ? ? ? ? ? ? ? ? ? ? ? TIME 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:01 00:00:00 00:00:02 00:00:00 00:00:00 00:00:23 00:00:08 CMD gnome-session ssh-agent ssh-agent dbus-launch dbus-daemon gconfd-2 gnome-keyring-d gnome-settingssh esd metacity nautilus Figure 5.3: uso del comando ps 5.2.14 grep grep busca en la entrada, bien en la que se le especifica con nombres de ficheros o bien en la entrada estándar las lı́neas que concuerden o coincidan con el patrón dado. Suponiendo el archivo que aparece en la figura 5.4, algunos ejemplos son: Command cd d mkdir d rmdir d mv f1 [f2...] d mv d1 d2 passwd alias name1 name2 alias name1="name2" unalias name1[na2...] ssh nd exit setenv name v export name="v" Description Change to directory d Create new directory d Remove directory d Move file f to directory d Rename directory d1 as d2 Change password Create command alias (csh/tcsh) Create command alias (ksh/bash) Remove command alias na Login securely to remote node End terminal session Set env var to value v (csh/tcsh) set environment variable to value v (ksh/bash) Figure 5.4: archivo a procesar usando grep Buscando todas las apariciones del texto “command” dentro del archivo serı́a: $ grep command comandos.txt alias name1 name2 alias name1="name2" unalias name1[na2...] Create command alias (csh/tcsh) Create command alias (ksh/bash) Remove command alias na También se puede usar en combinación del comando cat usando el operador redireccionamiento pipe, — . Si por ejemplo se buscan todas las lı́neas donde exista la palabra “directory”, además imprimiendo el número de lı́nea donde aparece el patrón, serı́a: 26 $ cat comandos.txt | grep -n directory 2:cd d Change to directory d 3:mkdir d Create new directory d 4:rmdir d Remove directory d 5:mv f1 [f2...] d Move file f to directory d 6:mv d1 d2 Rename directory d1 as d2 Si se desea buscar la palabra “directory” en los archivos de texto que están dentro del directorio “command” y sus respectivos subdirectorios, además mostrar el número de lı́nea donde está dicha palabra, la orden a usar es: $ grep -n -r directory command/ command/comandos.txt:2:cd d command/comandos.txt:3:mkdir d command/comandos.txt:4:rmdir d command/comunes/edicion.txt:10:mv f1 [f2...] d command/otros/datos.txt:16:mv d1 d2 5.2.15 Change to directory d Create new directory d Remove directory d Move file f to directory d Rename directory d1 as d2 more more es un filtro para paginar texto, mostrando una pantalla cada vez. Los usarios deben tener en cuenta que less provee muchas mejoras. Para mostrar la siguiente lı́nea usar la tecla “enter”, para pasar a la siguiente página usar “espacio”. Para realizar búsquedas dentro del texto mostrado, es posible usar los comandos de búsqueda de patrones de vi. /patron dado un patrón de búsqueda, usar n para la siguiente aparición del patrón. 5.2.16 less less es similar a more, la diferencia es que permite mover hacia atras y hacia adelante. No requiere tener en memoria la entrada completa antes de empezar ası́ que es más rápido que usar otros editores como vi. Para realizar búsquedas puede usar los mismos comandos que en el editor vi o more . 5.2.17 ssh ssh es un programa para conectarse a una máquina remota y ejecutar comandos en ella. Provee comunicaciones seguras y encriptadas sobre la red. Conexiones X11 y puertos TCP arbitrarios también pueden ser conectados sobre un canal seguro. En caso de no especificar el nombre del usuario (login, username) se usa el username actual por default. En caso de no existir, se debe ingresar el username, y posteriormente el password en ambos casos. Para conectarse a un servidor con soporte X, usar la siguiente secuencia: $ ssh -X [email protected] Authorized uses only. All activity may be monitored and reported. [email protected]’s password: Last login: Mon Aug 20 13:35:14 2007 from red09.utm.mx Authorized uses only. All activity may be monitored and reported. You have mail. bash-2.05$ _ 27 5.2.18 login login permite cambiar de usuario dentro de un sistema. 5.2.19 logout logout permite terminar la sesión del usuario. 5.2.20 passwd passwd al ser utilizada sin parámetros cambia la contraseña para el usuario que lo invoca. Primero le exigirá la contraseña vigente, y a continuación pedirá dos veces la nueva para prevenir errores de escritura. El superusuario puede invocar el programa para cambiar la contraseña de un usuario existente. En este caso no se exige al superusuario la contraseña vigente para el usuario. El uso de los dos parámetros asigna al usuario la contraseña indicada en el segundo parámetro. Puede ser útil cuando se debe dar a muchos usuarios una contraseña inicial predefinida. Pero también puede ser extremadamente peligroso. Un simple fallo en un programa podrı́a cambiar la contraseña del superusuario (root) a cualquier cosa desconocida. $ passwd Changing password for alguien (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: contrase\~na actualizada correctamente 28 Chapter 6 Preguntas y ejercicios 1. Qué es un sistema operativo? Por qué usar un sistema operativo? 2. Que ventajas tiene un sistema con interfaz gráfica a uno que funciona en modo texto (consola), (mencione 3)? 3. Historicamente, que importancia tiene Unix o Por qué cree que es y ha sido tan importante? 4. Mencione 4 gestores o entornos de escritorio de Linux, y 4 diferentes distribuciones. Que diferencia hay entre una distribución y un entorno de escritorio? 5. Qué ventaja tiene Windows (en sus diferentes versiones) sobre otros sistemas operativos? 6. Qué utilidad tiene el directorio ’HOME’ dentro de Linux? 7. En qué directorios se encuentran la mayor parde de los programas y comandos más usados? 8. Directorio donde se encuentra los programas que inician al momento de arrancar la máquina. 9. Instrucción para listar los usuarios que están conectados actualmente al sistema y guardarlo dentro del directorio ’HOME’ directamente en el archivo ’usuarios.txt’ 10. Escriba la secuencia de comandos para crear la siguiente estructura de archivos y directorios -los archivos por notación aparecen con extension, los directorios no la tienen. computadora/ |-- almacenamiento | |-- cd.txt | |-- discosduros.txt | ‘-- dvd.txt |-- entrada | |-- raton.txt | ‘-- teclado.txt |-- memoria | |-- ram.txt | ‘-- rom.txt |-- procesador | |-- amd.txt | ‘-- powerPC.txt ‘-- salida |-- impresora.txt ‘-- pantalla.txt 29 11. Suponga que está dentro del directorio computadora, redireccione la salida del comando date hacia el archivo fecha.txt. 12. Renombre el archivo “fecha.txt“ y póngale “coreduo.txt”. Muevalo al directorio procesador. 13. Mueva el directorio memoria con todo su contenido y coloquelo dentro del directorio procesador. (especifique desde donde se encuentra cuando ejecute el comando). 14. Investigue cómo usar el comando chmod y cambie los permisos del archivo amd.txt para que tenga permisos rwxr-xr– 15. Elimine el directorio salida usando el comando rmdir en combinación con el comando rm. 16. Suponga que el archivo dvd es muy grande, y sólo se quieren mostrar las lı́neas del archivo donde aparece la palabra pista y guardarlas en un archivo de nombre pistasdvd.txt dentro del mismo directorio. Que combinación de instrucciones se usarı́an? Recuerde el redireccionamiento. 17. Se quiere guardar la lista de usuarios que están en lı́nea en el sistema en un archivo dentro de la carpeta computadora, el archivo debe llamarse “usuarios.txt”. 18. Qué diferencia existe entre los comandos cat, more y less? 19. Elimine el directorio procesador, junto a todo su contenido, usando sólo una instrucción 20. Dibuje de manera jerárquica (como en la fig del problema 5) que archivos deben quedar. Posteriormente elimine toda la estructura sin usar la opción recursiva del comando rm. 21. A partir de la siguiente secuencia de instrucciones: $ $ $ $ $ $ $ $ $ $ $ $ $ mkdir paises cd paises mkdir america mkdir asia mkdir europa cd asia ls > mexico.txt ls > vietnam.txt cd .. who > america/japon.txt who > america/brasil.txt ls -R > europa/congo.txt ls -R > europa/usa.txt (a) Cómo queda la estructura de archivos y directorios? (dibujela) (b) Usando el comando move, escriba la secuencia para que los archivos de los paises queden donde corresponden, si falta alguna carpeta de algun continente, creela. (c) Cree una carpeta de nombre euroAsiaAfri (Euro-asiatico-africano) y mueva las carpetas que correspondan dentro de este directorio. (d) Cree las carpetas sudamerica y norteamerica dentro de america, y coloque los archivos correspondientes segun su localización geográfica. (e) De forma jerárquica, dibuje cómo quedarı́a la estructura. (f) Escriba las instrucciones para mostrar el contenido de la carpeta america y sus subcarpetas. 30 Bibliography [1] Kernighan, Brian W. El entorno de programacion Unix, 1992 [2] manual de referencia electrónico de linux, man comando, [3] Mohr, James Linux: recursos para el usuario, 1999. [4] Morgan Rachel, McGilton Henry, Introducción al UNIX Sistema V, McGraw Hill [5] Petersen, Richard, Linux: manual de referencia, 1999. [6] Webopedia, www.webopedia.com [7] Wikipedia, www.wikipedia.com 31