Sistemas Operativos y una introducci´on a los sistemas Unix/

Moises E. Ram´ırez 1 Universidad Tecnol´ogica de la Mixteca Huajuapan de Le´on,Oaxaca M´exico http://mixteco.utm.mx/˜merg/ [email protected]

August 20, 2007

1tel. +34-95353 20399 ext 200 Contents

1 Introducci´on 3

2 Historia 5

3 Sistemas operativos 7 3.1 Clasificaci´on...... 7 3.1.1 Interfaz con el usuario ...... 8

4 Casos especiales de sistemas operativos y sus entornos de trabajo 9 4.1 Int´erprete de comandos ...... 9 4.2 Interfaz gr´afica ...... 10 4.3 DOS: Disk Operating System ...... 11 4.4 Mac OS ...... 11 4.5 Microsoft Windows ...... 12 4.6 Unix ...... 13 4.7 Linux ...... 14 4.7.1 Caracter´ısticas de Linux ...... 16 4.7.2 GNOME ...... 17 4.7.3 KDE ...... 18 4.7.4 ...... 19 4.7.5 Enlightenment ...... 19

5 Entorno de consola b´asicoen Linux 21 5.1 Estructura de directorios y archivos ...... 21 5.2 Instrucciones b´asicas ...... 23 5.2.1 pwd ...... 23 5.2.2 ls ...... 23 5.2.3 man ...... 25 5.2.4 mkdir ...... 25 5.2.5 rmdir ...... 25 5.2.6 cd ...... 26 5.2.7 tree ...... 26 5.2.8 date ...... 27 5.2.9 rm ...... 27 5.2.10 mv ...... 27 5.2.11 top ...... 28 5.2.12 ps ...... 30 5.2.13 kill ...... 30 5.2.14 grep ...... 31 5.2.15 more ...... 32

1 5.2.16 less ...... 32 5.2.17 ssh ...... 33 5.2.18 login ...... 33 5.2.19 logout ...... 33 5.2.20 passwd ...... 33

6 Preguntas y ejercicios 35

2 Chapter 1

Introducci´on

Una computadora sin software no presta ninguna utilidad, es s´oloun conjunto de metal, silicio, equipo de comunicaciones y material magn´etico.Son los programas los que hacen que la computadora sea algo ´utila 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´onde la computa- dora.

+ Programas de aplicaci´on(software de aplicaci´on): 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´on. Es un nivel de software por encima del hardware que controla todas las partes del sistema y presenta al usuario una interfaz o m´aquina virtual que es m´asf´acil 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´onordenada 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´onse reconocen los siguientes niveles, partiendo desde el usuario hacia la m´aquina f´ısica:

+ Programas de aplicaci´on:Sistema bancario, Reservaciones a´ereas, Juegos.

+ Compiladores, Editores, Int´erprete 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´ecnico, UNIX se refiere a una familia de sistemas operativos que comparten unos criterios de dise˜no e interoperabilidad en com´un. Esta familia incluye m´asde 100 sistemas operativos desarrollados a lo largo de 20 a˜nos. No obstante, es importante se˜nalar que esta definici´onno implica necesariamente que dichos sistemas operativos compartan c´odigoo cualquier propiedad intelectual.

3 + UNIX – el sistema operativo original: desde el punto de vista hist´orico, UNIX se refiere a la subfamilia de sistemas operativos que descienden de la primera implementaci´onoriginal de AT&T. El t´ermino ”descendencia” ha de interpretarse como trabajos derivativos que comparten propiedad intelectual con la implementaci´onoriginal.

4 Chapter 2

Historia

• En la ´epoca de los bulbos (o tuvos de vac´ıo) y conexiones. Se programaba en lenguaje de m´aquina absoluto, o realizando directamente las conexiones el´ectricas. Alrededor de 1950 se introducen las tarjetas perforadas.

• En la ´epoca 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´aquina, buscando minimizar los tiempos muertos.

• En la ´epoca de los circuitos integrados y multiprogramaci´on.El sistema 360 de IBM unifica computa- doras comerciales y cient´ıficas en una sola l´ıneade m´aquinas con software compatible. Se introduce la multiprogramaci´on,que divide la memoria en partes y ejecuta un programa distinto en cada una. El spooling permite la operaci´onsimult´anea y en l´ınea de perif´ericos. El tiempo compartido es una variante de multiprogramaci´onque 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´ıade Massachusetts) formaron un equipo de investigaci´onque desarroll´oel sistema operativo denominado MULTICS (Multiplexed Information and Comptuting System). El sistema MULTICS fue abandonado por que era un sistema lento y requer´ıamucha 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´ascomodo y simple para desarrollar programas. El nuevo sistema operativo se escribio para la computadora DEC PDP–7 y recibi´oel nombre de UNICS (Multiplexed Information and Computing System que luego pas´oa ser UNIX. El c´odigo de UNIX fue escrito en el lenguaje de programaci´onC, lo cual fue totalmente novedoso ya que todos los sistemas operativos hasta la ´epoca eran escritos en lenguaje ensamblador. El lenguaje ensamblador en cada m´aquina en esas epocas ten´ıadiferencias. 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´assencilla que un sistema operativo completo), y despu´es compilarlo para dicha plataforma.

• En la ´epoca de la integraci´ona gran escala, surgen las estaciones de trabajo y computadoras personales. El sistema operativo DOS aparece en escena siendo ´este y posteriormente Windows lo que llev´oa Microsoft a ser la empresa por referencia de software. El Software ”amigable con el usuario” hace su aparici´oncon 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 ´unico.

5 En 1991, un estudiante de ciencias de la computaci´onllamado desarroll´oun n´ucleo o kernel para ordenadores con arquitectura de procesador Intel x86 que conten´ıa muchas de las funcional- idades de UNIX y lo lanz´oen forma de c´odigo abierto bajo el nombre de Linux. En 1992, el n´ucleo 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´asimportante que se ejecuta sobre la computadora. Cualquier computadora de prop´osito general debe tener un SO para poder ejecutar programas. Los SO realizan tareas b´asicascomo reconocimiento de la entrada de datos desde el teclado, enviar datos a la pantalla, la administraci´onde los archivos y directorios almacenados en las unidades de disco duro y el control de los dispositivos perif´ericoscomo impresoras, scanners, unidades de almacenamiento externas, entre otros. Para sistemas muy grandes tienen todav´ıam´asresponsabilidades y tareas. Su labor es como la de un polic´ıade tr´ansito,se asegura que todos los programas y usuarios obtengan los recursos que necesitan e interact´uen sin que unos intervengan con las actividades de otros. El SO tambi´enes responsable de la seguridad, se asegura de que usuarios no autorizados no accesen al sistema.

3.1 Clasificaci´on

Los SO proveen una plataforma para que otros programas (llamados aplicaciones) puedan ejecutarse. La elecci´ondel sistema operativo determina las aplicaciones que pueden ejecutarse en cierto momento.

• Multiusuario: Permite que dos o m´asusuarios ejecuten programas al mismo tiempo. Varios SO’s permiten cientos o hasta miles de usuarios.

• Multiprocesamiento: Soporta la ejecuci´onde un mismo programa en m´asde un procesador.

• Multitarea: Permite que m´asde 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´aneamente.

3.1.1 Interfaz con el usuario El usuario normalmente interact´uacon el SO a trav´esde 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´esde una aplicaci´onllamada int´erprete de l´ınea de comandos. Las interfaces gr´aficas(GUI) permiten la ejecuci´onde los mismos comandos m´asf´acilmente, haciendo clic y ejecutando acciones sobre algunos men´us(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´asf´acilla operaci´onde estos sistemas surgieron las interfaces gr´aficasde usuario (Graphic User Interface). En esta secci´onse mostrar´analgunos entornos de trabajo en modo texto y gr´afico. Posteriormente los sistemas operativos m´asimportantes, y en el caso de linux los entornos de trabajo m´ascomunes.

4.1 Int´erprete de comandos

Int´erprete de comandos, Terminal, Consola o Shell es un programa que act´ua 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´on. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuaci´on,la shell queda esperando m´asinstrucciones. Se interact´uacon la informaci´onde la manera m´assimple posible, sin gr´aficas, solo el texto crudo. Existen para diversos sistemas operativos, diversos tipos de hardware, con diferente funcionalidad. Suelen incorporar caracter´ısticastales como control de procesos, redirecci´onde entrada/salida, listado y lectura de ficheros, protecci´on,comunicaciones y un lenguaje de ´ordenes para escribir programas por lotes o (scripts o gui´ones). Es posible que un sistema operativo tenga varios int´erpretes de comandos. En el caso de Linux est´ael Korn shell, Basic Shell, C Shell, entre otros (ver figura 4.1). Casi cualquier programa puede dise˜narse para ofrecer al usuario alguna clase de Int´erprete de comandos. Por ejemplo, casi todos los juegos de PC en primera persona tienen un Int´erprete de comandos incorporada, utilizada para diagnostico y labores administrativas. Su contraparte es la Interfaz gr´aficade usuario que ofrece una est´eticamejorada a costa de mayor consumo de recursos computacionales, una mayor vulnerabilidad por complejidad y , en general, una reducci´onen la funcionalidad ofrecida.

4.2 Interfaz gr´afica

En el proceso de interacci´onpersona-computadora, la interfaz gr´afica de usuario, es el artefacto tecnol´ogico de un sistema interactivo que posibilita, a trav´esdel uso y la representaci´ondel lenguaje visual, una interacci´on amigable con un sistema inform´atico. La interfaz gr´afica de usuario (en ingl´es Graphical User Interface, GUI) es un tipo de interfaz de usuario que utiliza un conjunto de im´agenes y objetos gr´aficospara representar la informaci´ony acciones disponibles

8 Figure 4.1: Bash shell sobre entorno Unix/Linux

en la interfaz. Habitualmente las acciones se realizan mediante manipulaci´ondirecta para facilitar la inter- acci´ondel usuario con la computadora. Surge como evoluci´onde la l´ınea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gr´afico. Ejemplos de interfaz gr´aficason 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´erprete de ordenes se llamaba command.com. En las versiones de Windows modernas, (v´ease Windows NT, 2000, 2003, XP o Vista) MS-DOS dej´ode llamarse as´ıpara convertirse en S´ımbolo del Sistema, que se ejecutaba mediante cmd.exe Existen varias versiones de DOS. El m´asconocido 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´asrecientemente, el FreeDOS. Con la aparici´onde los sistemas operativos gr´aficos,del tipo Windows, el DOS ha ido quedando relegado a un segundo plano. El DOS carece por completo de interfaz gr´afica, y no utiliza el mouse. Era incapaz de detectar el hardware (no exist´ıael Plug-and-play), por lo que todo deb´ıa ser configurado manualmente. No era ni multiusuario ni multitarea. No pod´ıatrabajar con discos duros muy grandes. Originalmente, por limitaciones del software, no pod´ıamanejar m´asde 64KB de memoria RAM.

9 C:\>dir Volume in drive C has no label Volume Serial Number is 1234-5678 Directory of C:\ SETUP

01-21-96 9:06p TMP 01-21-96 4:01p COMMAND COM 93,890 01-21-96 10:22p WINDOWS 01-21-96 8:42p CONFIG SYS 122 01-31-03 11:50p PROGRA~1 01-21-96 6:26p MYDOCU~1 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´afica de usuario en tener ´exito, figura 4.3. Apple quit´oimportancia de forma deliberada a la existencia del sistema operativo en los primeros a˜nos de Macintosh para ayudar a hacer que la m´aquina pareciera m´asagradable al usuario y a distanciarla de otros sistemas como MS-DOS, que eran un desaf´ıot´ecnico.Apple quer´ıaque Macintosh fuera visto como un sistema que trabajara nada m´ascon encenderlo (f´acil).

Figure 4.3: Screenshot del entorno gr´aficoMac OS X

Fueron introducidas al mercado en 1984, con caracter´ısticas como: interfaz gr´afica (GUI) usando ventanas, ´ıconosy un rat´onpara hacerla relativamente f´acil para inexpertos y as´ıcomenzar a usar la computadora

10 m´asr´apidamente para generar productividad. La interfaz gr´aficaes con la finalidad de evitar el aprendizaje de comandos, de esta forma solamente se apunta sobre el ´ıconoy se hace un clic con el rat´onpara ejecutar alguna acci´on. La interfaz gr´aficaest´aembebida en el sistema operativo, esto significa que todas las aplicaciones que cor- ran sobre una computadora Macintosh tienen una interfaz similar. una vez que un usuario se ha familiarizado con una aplicaci´on, aprender´anuevas aplicaciones m´asr´apidamente. El ´exito de la GUI de Macintosh fue el inicio de una nueva era de aplicaciones y sistemas operativos basados en interfaces gr´aficas. 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´apidez y poder. Todos los modelos est´andisponibles en diferentes configuraciones.

4.5 Microsoft Windows

Microsoft Windows (conocido simplemente como Windows) es un sistema operativo con interfaz gr´afica para computadoras personales cuyo propietario es la empresa Microsoft. Las distintas versiones de Windows, las cuales ofrecen un entorno gr´aficoamigable y sencillo, principalmente desde la versi´onWindows 95, ha convertido en Windows en el sistema operativo m´asutilizado en el mundo. Debido a ello la mayor´ıade 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´unalgunas estimaciones est´aen un 90% de todas las computa- doras personales. Del restante 10% la mayor´ıason computadoras Apple. Igual que el entorno de las computadoras Macin- tosh, Windows provee interfaz gr´afica (GUI), administraci´onde memoria virtual, multitareas y soporte para una gran variedad de dispositivos perif´ericos.

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´ıaser instalado en virtualmente cualquier computadora en el que existtiera un compilador de C. Esta portabilidad natural, combinada a su bajo costo lo convirti´oen una de las elecciones m´aspopulares 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´or´apidamente en el sistema operativo l´ıder para los equipos de c´omputo cient´ıfico. El lenguaje C y Unix fueron desarrollados por AT&T y distribuidos a instituciones acad´emicas y guberna- mentales ocasionando la portabilidad a una variedad de familias de computadoras m´asgrande que cualquier otro sistema operativo. Unix fue dise˜nado para ser portable, multitareas y multiusuario en una configuraci´on de tiempo compartido. Unix maneja los dispositivos y ciertos procesos de comunicaci´oncomo archivos, eso significa que para leer datos del teclado, por ejemplo, se leen datos de un archivo que lo representa. El kernel o n´ucleodel 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´asprogramas quieren accesarlos simult´aneamente. Las Implementaciones m´asimportantes de Unix son:

• Solaris de Sun Microsystems. Uno de los sistemas operativos Unix m´asdifundido en el entorno empre- sarial 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´aficode Solaris 10

4.7 Linux

Linux es uno de los paradigmas m´asprominentes del software libre y del desarrollo del c´odigo abierto, cuyo c´odigofuente est´adisponible p´ublicamente, para que cualquier persona puede libremente usarlo, estudiarlo, redistribuirlo y, con los conocimientos inform´aticosadecuados, modificarlo. Los primeros sistemas Linux se originaron en 1992, al combinar utilidades de sistema y librer´ıas del proyecto GNU con el n´ucleoLinux, completando un sistema tambi´enconocido como GNU/Linux. Desde fines de 1990 Linux ha obtenido el apoyo de diversas empresas multinacionales del mundo de la inform´atica, 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´efonos 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´enconocidas como ”distros”), ensambladas por individuos, empresas y otros organismos. Cada distribuci´onpuede incluir cualquier n´umero de software adicional, incluyendo software que facilite la instalaci´ondel sistema. La base del software incluido con cada distribuci´on incluye el n´ucleo Linux y las herramientas GNU, al que suelen adicionarse tambi´envarios paquetes de software. Entre las distribuciones m´asimportantes de Linux est´an: • , Fedora • SuSE Linux de Novell. • Mandrake, Mandriva • Slackware • Debian, Ubuntu, Xubuntu, Kubuntu

12 Figure 4.5: Entorno gr´aficoX-Window de Unix

Las herramientas que suelen incluirse en la distribuci´onde este sistema operativo se obtienen de diversas fuentes, incluyendo de manera importante proyectos de c´odigo 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´ucleo de Linux provienen del proyecto GNU que desde 1983 hab´ıaliberado software que pudo ser usado en el proyecto de Linux de 1991, (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´acil de instalar, tan solo basta con descargar la imagen iso de una distribuci´oncomo Debian, SuSE, Ubuntu o YellowDog (la mayor´ıa son gratuitas) y grabarla en un CD o DVD. Existen versiones linux para m´aquinas x86 (abarca desde computadoras 386, pentium I, celeron, hasta pentium IV), tambi´en para 64 bits (los nuevos procesadores, aunque tambi´entrabajan con linux para x86), y para procesadores PowerPc (ppc) de las computadoras Apple Macintosh. El resto es tan f´acil 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´enllamadas Live, del ingl´es”en vivo”. Con la adopci´onpor 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´aficaalternativa a la tradicional interfaz de l´ıneade comandos de Unix. Existen en la actualidad numerosas aplicaciones gr´aficas, ya sean libres o no, que ofrecen funcionalidad que est´apermitiendo que GNU/Linux se adapte como herramienta de escritorio. Entre los entornos m´aspopulares est´an: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´onde la memoria entre procesos , de manera que uno de ellos no pueda colgar el sistema • Carga de ejecutables por demanda: Linux s´ololee del disco aquellas partes de un programa que est´ansiendo usadas actualmente. • Todo el c´odigo fuente est´adisponible, incluyendo el n´ucleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; adem´astodo ello se puede distribuir libremente. Hay algunos programas comerciales que est´ansiendo ofrecidos para Linux actualmente sin c´odigofuente, 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´acilde 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´aficoGNOME sobre Linux

El proyecto GNOME surgi´oen agosto de 1997 como proyecto liderado por los mexicanos 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´aficoGNOME sobre Linux

Como con la mayor´ıade los programas GNU, GNOME ha sido dise˜nadopara 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´aficosGTK, originalmente desarrollada para el programa The GIMP. A medida que el proyecto ha ido progresando en los ´ultimos a˜nos,los objetivos del mismo se han extendido para tratar una serie de problemas en la infraestructura Unix existente.

4.7.3 KDE KDE (acr´onimo del ingl´es K Desktop Environment, Entorno de Escritorio K) es un entorno de escritorio gr´afico 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´agina web, ”KDE es un entorno gr´afico contempor´aneo 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 (´exfeis) es un entorno de escritorio ligero para sistemas tipo Unix como Linux, BSD, Solaris y deriva- dos. Se configura ´ıntegramente con el rat´on. Su creador, Olivier Fourdan, dice de ´el: ”Dise˜nado para la productividad, se carga y ejecuta aplicaciones r´apido, mientras conserva recursos de sistema”, ver figura 4.9. Xfce tambi´enprovee el marco de trabajo para el desarrollo de aplicaciones. Adem´asde Xfce mismo, hay otros programas que tambi´en 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´en 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´aficoKDE 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´oncon otros entornos de escritorio como GNOME o KDE. Tiene una variedad muy grande de temas y gr´aficosdesarrollados pensando en el rendimiento del sistema.

16 Figure 4.9: Screenshot del entorno gr´aficoXfce sobre Linux

Figure 4.10: Screenshot del entorno gr´aficoKDE sobre Linux

17 Chapter 5

Entorno de consola b´asico 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´asimportantes donde hay datos y programas para la configuraci´on,administraci´ony 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´asiempre dentro del directorio root. En general no se recomienda almacenar archivos en este directorio. Tambi´en es importante notar que existe un usuario denominado root, ´este es el usuario con mayores privilegios dentro del sistema.

• /boot Directorio de arranque Aqu´ıse almacena la informaci´onnecesaria para iniciar o arrancar ( bootear) el sistema. Dentro de este directorio est´aalmacenado el Kernel y el gestor de arranque (en caso de equipos con m´asde un sistema operativo instalado).

• /etc Directorio de configuracion Aqu´ıse almacenan los archivos de configuraci´ondel sistema. La mayor parte son archivos que pueden ser editados a mano, entre ellos est´an:

– /etc/inittab o /etc/init.d: contiene los procesos que ser´anlanzados al momento de arrancar el sistema durante la operaci´onnormal. Por ejemplo, se puede configurar si se arrancar´aen modo texto o modo gr´afico, o si arrancar´ael servidor de correos, ftp, etc. de forma autom´atica o manual. – /etc/fsstab: describe la informaci´onsobre los diferentes sistemas de archivos en el sistema, sus puntos de montaje y si se har´ande forma autom´aticao manual. Entre los dispositivos a montar est´anlos discos duros o particiones de ellos, floppies, cdroms, dispositivos usb, etc. – /etc/passwd: contiene informaci´onpara 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´asb´asicospero importantes del sistema tales como shells, ls, grep, entre otros. /usr/bin contiene aplicaciones generales para el sistema.

18 • /sbin, /usr/sbin Est´analmacenados la mayor parte de los programas de administraci´on, la mayor parte de ellos s´olo pueden ser ejecutados por usuarios con privilegios como root.

• /usr Contiene aplicaciones de usuario, codigos fuente, im´agenes, documentacion de ayuda, o archivos de configuraci´ongen´ericos. Entre los directorios m´asinteresantes est´an:

– /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´amica.

• /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 infor- maci´ondentro del sistema. Es posible configurar el sistema de tal forma que los usuarios no puedan ver los archivos de otros usuarios. Tambi´en se pueden crear grupos de trabajo donde s´ıse puedan compartir informaci´on.

• /root Es el directorio home del super usuario root.

• /var Contiene informaci´on variable que cambia constantemente mientras el sistema est´aen fun- cionamiento. 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´onsobre 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´ascom´unlas 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´anenviando 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´asicas

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´ızen 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 configuracion Firefox_wallpaper.png wkSpace adress.html Desktop poem.txt~ work amsn_received download Projects workspace basura eclipse public_html

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˜no del archivo, el grupo al que pertenece, el tama˜no del archivo en bytes, fecha de ´ultima modificaci´ony 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´asmuestra los archivos que empiezan con el car´acter . 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´oy los permisos de los mismos. $ ls -al total 3052 drwxr-xr-x 98 moy moy 8192 2007-08-17 17:09 . drwxr-xr-x 7 root root 4096 2007-02-01 17:24 .. drwx------2 moy moy 4096 2006-02-20 17:13 .3ddesktop drwxr-xr-x 3 moy moy 4096 2007-08-05 09:07 acm drwxr-xr-x 3 moy moy 4096 2006-01-27 16:24 .adobe -rw-r--r-- 1 moy moy 188674 2007-01-29 12:25 adress.html drwx------2 moy moy 4096 2006-01-26 11:58 .alsaplayer drwxr-xr-x 2 moy moy 4096 2007-07-02 22:31 .anjuta Otras posibles opciones son: -t y -s, ordenamiento por fecha y tama˜no respectivamente. -h muestra los tama˜nos en K (Kilobytes), M (Megabytes) y G (Gigabytes) respectivamente. La opci´on -R muestra los directorios y archivos de forma recursiva.

20 $ ls -lh total 3,0M -rwxrwxrwx 1 root root 22K 2007-08-16 12:11 Bash_screenshot.png -rwxrwxrwx 1 root root 653K 2007-08-17 11:29 enlightenment.png -rwxrwxrwx 1 root root 40K 2007-08-16 12:11 GNOME-escritorio.png -rwxrwxrwx 1 root root 99K 2007-08-16 17:23 gnome.png -rwxrwxrwx 1 root root 105K 2007-08-16 12:01 KDE_logo.png -rwxrwxrwx 1 root root 106K 2007-08-16 11:55 KDE.png -rwxrwxrwx 1 root root 812K 2007-08-16 18:56 OSX-01.png -rwxrwxrwx 1 root root 163K 2007-08-16 18:56 Solaris10.png -rwxrwxrwx 1 root root 71K 2007-08-16 18:55 tux.png -rwxrwxrwx 1 root root 679K 2007-08-16 12:00 xfce.png -rwxrwxrwx 1 root root 208K 2007-08-16 12:41 Xwindow.png

5.2.3 man La opci´on man muestra ayuda sobre una orden especificada. Por ejemplo:

man ls muestra el manual de la instrucci´onls. Para buscar palabras se usa el comando /palabra donde palabra es la expresi´ono 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´oloescribe el nombre del directorio, la ruta especificada por default es la ruta actual. Ejemplo:

mkdir computadora el comando mkdir no arroja ning´un mensaje en caso de ´exito, para comprobar la creaci´onde 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´onde dichas carpetas ser´ıa:

$ mkdir computadora $ mkdir computadora/entrada $ mkdir computadora/memoria $ mkdir computadora/procesador $ mkdir computadora/salida

5.2.5 rmdir rmdir permite eliminar carpetas vac´ıasdentro 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´ael directorio home.

$ pwd % para saber donde se est\’a /media/datos/prope/ $ cd computadora $ cd salida $ pwd /media/datos/computadora/salida

algunos casos especiales son: cd .. baja un nivel en la estructura de directorios. cd . se cambia al directorio actual (no hace nada) cd / se cambia al directorio ra´ızdel sistema cd /home/alumnos/ se cambia al directorio /home/alumnos cd se cambia al directorio HOME cd /~ se cambia al directorio HOME cd /computadora~ se cambia al directorio computadora que est´adentro de HOME

5.2.7 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 solo muestra directorios -a imprime todos los archivos -r orden alfab´etico inverso -h muestra el tama˜no en formato humano -s orden por tama˜no -t orden de tiempo -L num muestra hasta el nivel num de profundidad del ´arbol

5.2.8 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´onya que permite eliminar de manera recursiva un directorio y sus correspondientes subdirectorios. Los ejemplos ser´anusando 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 computadora/entrada $ rm raton.txt el comando rm permite eliminar tambi´enmas de un archivo en una sola l´ınea, s´olohay q especificar

$ cd computadora/entrada $ rm raton.txt teclado.txt Usar rmdir para eliminar el directorio entrada ocasionar´ıaun 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 computadora $ rm -r entrada

5.2.10 mv mv permite mover un archivo o directorio de una carpeta a otra o renombrar carpetas y archivos. Nueva- mente 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 computadora %entra al directorio computadora $ mv procesador procesamiento

si en vez de pantalla.txt se quiere lcd.txt, ser´ıa:

$ cd salida %entra al directorio salida $ mv pantalla.txt lcd.txt en caso de que se quiera mover la carpeta salida y ponerla dentro del directorio memoria:

$ cd .. %retorno un nivel $ mv salida memoria

5.2.11 top top proporciona una visi´oncontinua de la actividad del procesador en tiempo real. Muestra un listado de las tareas que hacen un uso m´asintensivo 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´on. La mayor´ıade las caracter´ısticaspueden seleccionarse mediante una orden interactiva o especific´andola en el fichero de configuraci´onpersonal o general. La pantalla se actualiza cada 5 segundos de forma predeterminada, pero esto se puede cambiar con la opci´onde la l´ınea de ´ordenes d o la orden interactiva s. Una pantalla de salida del comando est´aen la figura: Algunos de los datos m´asimportantes 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 USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5000 root 16 0 238m 39m 10m S 2.9 3.2 2:04.06 Xorg 5554 moy 15 0 46940 8972 5800 S 2.9 0.7 1:49.69 xmms 5537 moy 15 0 18500 11m 8148 S 0.7 0.9 0:19.96 metacity 6255 moy 15 0 66732 17m 10m S 0.5 1.4 0:02.57 gnome-terminal 6378 moy 15 0 134m 99m 13m S 0.5 8.0 0:34.64 evince 2124 root 10 -5 0 0 0 S 0.2 0.0 0:02.04 ata/0 5381 root 31 15 3212 1816 812 S 0.2 0.1 0:09.60 preload 5540 moy 16 0 65804 25m 16m S 0.2 2.0 0:13.37 gnome-panel 5670 moy 15 0 34880 10m 7824 S 0.2 0.9 0:01.54 notification-da 6539 moy 18 0 2316 1172 888 R 0.2 0.1 0:01.00 top 1 root 15 0 2776 1668 524 S 0.0 0.1 0:01.39 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 4 root 10 -5 0 0 0 S 0.0 0.0 0:00.09 events/0 5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper 6 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 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´umero medio de procesos listos para ejecutarse durante los ´ultimos 1, 5 y 15 minutos. La l´ınea de uptime puede quitarse o ponerse con la orden interactiva l (ele min´uscula).

• processes El n´umerototal de procesos ejecut´andose cuando la ´ultima actualizaci´on. Este n´umero tambi´ense divide en el n´umero de tareas que est´anejecut´andose, 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´ellas cuyo valor nice es negativo.) El tiempo transcurrido en las tareas con la prioridad alterada por nice tambi´en se contar´aen el tiempo de sistema y de usuario, as´ı que el total ser´asuperior 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´uferes. La l´ıneade la informaci´onde 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˜nodel c´odigo de la tarea m´asdatos m´asespacio de pila, en kB. • TSIZE El tama˜no del texto o c´odigo de la tarea. • DSIZE Tama˜node Datos + Pila. • SWAP Tama˜node la parte de la tarea que est´aen el espacio de intercambio. • RSS Se muestra aqu´ıla cantidad total de memoria f´ısicautilizada 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˜no no interrumpible, R para ejecuci´on,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´ucleo). • TIME El tiempo total de CPU que la tarea ha usado desde que empez´o. Si el modo acumulativo est´aactivado, tambi´enincluye el tiempo de CPU empleado por los hijos del proceso que hayan muerto. Uno puede establecer el modo acumulativo con la opci´onde la l´ınea de ´ordenes S o cambiarlo con la orden interactiva S. La l´ınea de cabecera se cambiar´aentonces a CTIME. • %CPU La porci´ondel tiempo de CPU consumido por la tarea desde la ´ultima actualizaci´onde la pantalla, expresada como un porcentaje del tiempo de CPU total. • %MEM La porci´onde la memoria f´ısica ocupada por la tarea. • COMMAND El nombre de la orden de la tarea, que se truncar´asi es demasiado largo como para mostrarse en una l´ınea. Las tareas en memoria tendr´anuna l´ınea de ´ordenes completa, pero las que est´enen espacio de intercambio solamente tendr´anel nombre del programa entre par´entesis

5.2.12 ps ps muestra una instant´aneade los procesos actuales. Para actualizaci´oncontinua se debe usar el comando top. algunas opciones interesantes son: -u usuario muestra los procesos que est´aejecutando “usuario“ -l imprime los datos en formato largo -m muestra informaci´onde memoria -x muestra procesos que no est´ancontrolados por ninguna terminal -a muestra tambi´enlos procesos de otros usuarios -r s´oloprocesos que se est´anejecutando la figura 5.3 muestra una salida en formato largo para el usuario “usario”.

5.2.13 kill kill envia se˜nalesa procesos. La se˜nalpor default es TERM (terminar). La aplicaci´onque m´ascomunmente 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 S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 1001 5215 4997 0 76 0 - 7750 - ? 00:00:00 gnome-session 1 S 1001 5511 5215 0 75 0 - 1063 - ? 00:00:00 ssh-agent 1 S 1001 5512 5215 0 75 0 - 1064 - ? 00:00:00 ssh-agent 1 S 1001 5515 1 0 78 0 - 666 - ? 00:00:00 dbus-launch 1 S 1001 5516 1 0 75 0 - 711 - ? 00:00:00 dbus-daemon 0 S 1001 5518 1 0 75 0 - 1874 - ? 00:00:01 gconfd-2 1 S 1001 5521 1 0 78 0 - 689 - ? 00:00:00 gnome-keyring-d 0 S 1001 5523 1 0 75 0 - 7572 - ? 00:00:02 gnome-settings- 0 S 1001 5532 1 0 77 0 - 428 wait ? 00:00:00 sh 0 S 1001 5533 5532 0 75 0 - 1253 - ? 00:00:00 esd 0 S 1001 5537 5215 0 75 0 - 4625 - ? 00:00:23 metacity 0 S 1001 5539 5215 0 75 0 - 22044 - ? 00:00:08 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´andar las l´ıneasque concuerden o coincidan con el patr´ondado. Suponiendo el archivo que aparece en la figura 5.4, algunos ejemplos son:

Command Description cd d Change to directory d mkdir d Create new directory d rmdir d Remove directory d mv f1 [f2...] d Move file f to directory d mv d1 d2 Rename directory d1 as d2 passwd Change password alias name1 name2 Create command alias (csh/tcsh) alias name1="name2" Create command alias (ksh/bash) unalias name1[na2...] Remove command alias na ssh nd Login securely to remote node exit End terminal session setenv name v Set env var to value v (csh/tcsh) export name="v" 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 Create command alias (csh/tcsh) alias name1="name2" Create command alias (ksh/bash) unalias name1[na2...] Remove command alias na Tambi´ense puede usar en combinaci´ondel comando cat usando el operador redireccionamiento pipe, — . Si por ejemplo se buscan todas las l´ıneas donde exista la palabra “directory”, adem´asimprimiendo el n´umero de l´ınea donde aparece el patr´on,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´andentro del directorio “com- mand” y sus respectivos subdirectorios, adem´asmostrar el n´umero de l´ıneadonde est´adicha palabra, la orden a usar es:

$ grep -n -r directory command/ command/comandos.txt:2:cd d Change to directory d command/comandos.txt:3:mkdir d Create new directory d command/comandos.txt:4:rmdir d Remove directory d command/comunes/edicion.txt:10:mv f1 [f2...] d Move file f to directory d command/otros/datos.txt:16:mv d1 d2 Rename directory d1 as d2

5.2.15 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´ıneausar la tecla “enter”, para pasar a la siguiente p´agina usar “espacio”. Para realizar b´usquedas dentro del texto mostrado, es posible usar los comandos de b´usqueda de patrones de vi.

/patron dado un patr´onde b´usqueda, usar n para la siguiente aparici´ondel patr´on.

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´asr´apido que usar otros editores como vi. Para realizar b´usquedaspuede usar los mismos comandos que en el editor vi o more .

5.2.17 ssh ssh es un programa para conectarse a una m´aquina remota y ejecutar comandos en ella. Provee comunica- ciones seguras y encriptadas sobre la red. Conexiones X11 y puertos TCP arbitrarios tambi´enpueden 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´ondel usuario.

5.2.20 passwd passwd al ser utilizada sin par´ametros cambia la contrase˜napara el usuario que lo invoca. Primero le exigir´a la contrase˜na vigente, y a continuaci´onpedir´ados veces la nueva para prevenir errores de escritura. El superusuario puede invocar el programa para cambiar la contrase˜nade un usuario existente. En este caso no se exige al superusuario la contrase˜navigente para el usuario. El uso de los dos par´ametros asigna al usuario la contrase˜naindicada en el segundo par´ametro. Puede ser ´utilcuando se debe dar a muchos usuarios una contrase˜nainicial predefinida. Pero tambi´enpuede ser extremadamente peligroso. Un simple fallo en un programa podr´ıacambiar la contrase˜nadel 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´ees un sistema operativo? Por qu´eusar un sistema operativo? 2. Que ventajas tiene un sistema con interfaz gr´aficaa uno que funciona en modo texto (consola), (men- cione 3)? 3. Historicamente, que importancia tiene Unix o Por qu´ecree 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´ony un entorno de escritorio? 5. Qu´eventaja tiene Windows (en sus diferentes versiones) sobre otros sistemas operativos? 6. Qu´eutilidad tiene el directorio ’HOME’ dentro de Linux? 7. En qu´edirectorios se encuentran la mayor parde de los programas y comandos m´asusados? 8. Directorio donde se encuentra los programas que inician al momento de arrancar la m´aquina. 9. Instrucci´onpara listar los usuarios que est´anconectados 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´onaparecen 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´adentro del directorio computadora, redireccione la salida del comando date hacia el archivo fecha.txt.

12. Renombre el archivo “fecha.txt“ y p´ongale “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´omo 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´oncon el comando rm.

16. Suponga que el archivo dvd es muy grande, y s´olose quieren mostrar las l´ıneasdel archivo donde aparece la palabra pista y guardarlas en un archivo de nombre pistasdvd.txt dentro del mismo directorio. Que combinaci´onde instrucciones se usar´ıan? Recuerde el redireccionamiento.

17. Se quiere guardar la lista de usuarios que est´anen l´ınea en el sistema en un archivo dentro de la carpeta computadora, el archivo debe llamarse “usuarios.txt”.

18. Qu´ediferencia existe entre los comandos cat, more y less?

19. Elimine el directorio procesador, junto a todo su contenido, usando s´olouna instrucci´on

20. Dibuje de manera jer´arquica (como en la fig del problema 5) que archivos deben quedar. Posteriormente elimine toda la estructura sin usar la opci´onrecursiva 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´omoqueda 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 cor- respondan dentro de este directorio. (d) Cree las carpetas sudamerica y norteamerica dentro de america, y coloque los archivos correspon- dientes segun su localizaci´ongeogr´afica. (e) De forma jer´arquica, dibuje c´omoquedar´ıala 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´onico de linux, man comando,

[3] Mohr, James Linux: recursos para el usuario, 1999.

[4] Morgan Rachel, McGilton Henry, Introducci´onal UNIX Sistema V, McGraw Hill

[5] Petersen, Richard, Linux: manual de referencia, 1999.

[6] Webopedia, www.webopedia.com

[7] Wikipedia, www.wikipedia.com

31