Download Sistemas Operativos y una introducción a los sistemas Unix

Document related concepts

Shell de Unix wikipedia , lookup

Carpeta de usuario wikipedia , lookup

GNU Hurd wikipedia , lookup

Malware en Linux wikipedia , lookup

Puppy Linux wikipedia , lookup

Transcript
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