Anda di halaman 1dari 8

El Sistema Operativo Linux/Unix

El Sistema Operativo es un conjunto de programas, cuyo objetivo final es ofrecer una interfaz entre el hardware
y los usuarios, de forma que el usuario no necesite conocer las peculiaridades de utilizacin de las diferentes
componentes del hardware. Su tarea consiste principalmente en gestionar los recursos del sistema informtico
(memoria, procesador, dispositivos de entrada/salida, etc.).
Adems de los programas propios del Sistema Operativo, uno de los programas de aplicacin ms importantes
es el intrprete de comandos shell , puesto que hace las funciones de intermediario entre el usuario y el
Sistema Operativo. La shell se encarga de leer, interpretar y ejecutar las rdenes de los usuarios. Por lo tanto
conociendo el conjunto de comandos que sabe interpretar la shell es posible acceder a todas las prestaciones que
ofrece el sistema.
Linux (as como UNIX) es un sistema que soporta la multitarea esto significa que puede haber varios programas
ejecutndose simultneamente, y multithreading (varios hilos de ejecucin por programa). Adems es un
sistema interactivo, lo que proporciona una comunicacin directa entre el usuario y el sistema (el intermediario
ser la shell) y multiusuario, lo que permite que varios usuarios trabajen simultneamente. Tambin permite que
un mismo usuario trabaje en varias consolas a la vez. En este captulo veremos los comandos ms generales y
tiles en lo que respecta a la administracin del sistema, los comandos elementales para la gestin de archivos y
otros comandos generales.
Nota: Los comandos son programas.

Qu son las consolas virtuales?


Las consolas virtuales aparecieron por primera vez en minix y en FreeBSD, proveen acceso a multiple login sessions,
lo que significa que varios usuarios pueden loguearse en el sistema y cada uno de ellos pueden ejecutar diversas tareas
a la vez. Con Alt + alguna de las teclas F1, F2, F3 , etc. nos cambiamos a otra virtual terminal. Normalmente hay un
mximo de 6 virtual terminals disponibles. Linux permite trabajar al mismo tiempo en varias consolas de texto. Para
pasar de una a otra, pulse Alt + Fn donde n es el nmero de la ventana virtual y Fn una tecla de funcin (por ejemplo
F1, F2, etc.). Puede configurar el nmero de ventanas en el archivo
/etc/inittab.
Si est usando X-Windows, la parte grfica , con la combinacin de teclas: Ctrl + Alt + Fn vuelve a la consola
de texto. Para regresar a X-Windows use Alt+F7, accediendo as a la consola empleada (la primera libre, es
decir no manejada por un getty). Por ejemplo, si tiene 6 consolas virtuales (de Alt+F1 hasta Alt+F6), con
Alt+F7, volveremos al modo grfico.

Sistema de archivos (filesystems)


El Sistema Operativo proporciona un punto de vista lgico y uniforme de almacenamiento de la informacin. El
Sistema Operativo hace abstraccin de las propiedades fsicas para definir una unidad de almacenamiento
lgico, el fichero o archivo. Y es el propio Sistema Operativo quin se encarga de la relacin entre ficheros y
dispositivos fsicos.

Archivos y directorios
Un archivo es una coleccin de informacin definida por su creador, relacionada y agrupada bajo un nombre
comn. Todo el trabajo que hacemos est almacenado en archivos y stos pueden representar programas, textos,
datos, etc. Para elegir un nombre de archivo normalmente se utiliza una secuencia de caracteres alfanumricos
(letras y dgitos), un punto . y otra secuencia de letras (extensin) que representa el tipo de fichero. Por
ejemplo: pract1.p, donde la extensin p indica que es un programa en Pascal.
Hay que evitar utilizar caracteres en los nombres de fichero que tengan un significado especial para el intrprete
de comandos (la shell), por ejemplo "/", "#", "$", etc.
El sistema operativo ofrece la posibilidad de organizar los archivos en directorios. Bsicamente un directorio es
un contenedor de un grupo de archivos. Adems de archivos los directorios pueden a su vez contener otros
directorios, que a vez pueden contener otros y as sucesivamente.
rbol de directorios, la jerarqua
que conforma al sistema, o lo que /
As es comollamar
podramos se va filesystem.
armando el

La estructura de directorios
jerrquica en forma de rbol, ya
la nombramos en el Captulo 1.
Ya dijimos tambin que el rbol
se va formando debido a que cada bin etc usr
directorio puede bifurcar hacia
otros directorios y archivos.
dev practicas tmp

Cuando un usuario accede al sistema se ubica automticamente en su propio directorio, que se denomina
directorio de trabajo o home directory. A travs de los comandos adecuados se puede desplazar hacia arriba o
hacia abajo en el rbol de directorios, modificando el directorio actual.

/
practicas
4 5 /ad1/usua
rio1/ejem
.p
ejem.p datos practica1
Nota: Pese a que el nombre de un archivo o directorio lo identifica unvocamente, es posible tener nombres
iguales siempre que su nombre de camino desde la raz sea diferente.

No siempre es necesario especificar pathnames completos para hacer referencia a archivos, se puede indicar el
camino relativo a partir del directorio actual o el inmediatamente superior al actual:
Si el pathname empieza por "/" se parte del directorio raz
Si el pathname empieza sin " /" se parte del directorio en que estemos en ese
instante Con "." se indica el directorio actual
Con ".." se indica el directorio inmediatamente superior al actual.

Ciertos caracteres del pathname son interpretados por la shell de una forma
especial: * equivale a cualquier cadena de caracteres.
? equivale a un carcter cualquiera.
[ ] indica uno de entre un conjunto de posibles caracteres.

Ejemplo: suponga que tenemos un directorio con los siguientes archivos: tp1.c, tp2.c, tp3.c, tp4.c, tp1.o,
tp2.o, tp3.o, gdb.
tp* indicara cualquier fichero salvo gdb
* indicara cualquier fichero , , y
tp?.c indicara los ficheros
tp1.c tp2.c tp3.c tp4.c
tp1.? indicara tp1.c y tp1.o
??? indicara gdb (es el nico compuesto de 3 caracteres)
????? indicara cualquiera excepto gdb (el resto tiene 5 caracteres)
tp[123].c indicara tp1.c, tp2.c y tp3.c
tp[14].c indicara tp1.c y tp4.c
tp[1-3].c indicara tp1.c, tp2.c y tp3.c
tp[1-4].c indicara tp1.c, tp2.c, tp3.c y tp4.c
En el caso que se permita el acceso de mltiples usuarios a los archivos, sera deseable controlar quin y en que
forma puede acceder a los mismos. Para ello LINUX asocia a cada archivo y directorio permisos de lectura,
escritura y ejecucin.
Nota: El tema de permisos de archivos y directorios est incluido en el
captulo Administracin de usuarios.

Tipos de archivos y directorios


Bajo GNU/Linux (y en Unix), cualquier cosa se abstrae en forma de un archivo. Veamos de qu tipo pueden ser.

Archivos normales (files)


Los archivos contienen datos o son ejecutables, y el sistema operativo no hace suposiciones sobre su contenido.
Ejemplo: los archivos de configuracin del sistema, archivos de texto.

Directorios (directory)
Los archivos directorios son una instancia especial de los archivos normales. Los directorios listan las
localizaciones de otros archivos, algunos de los cuales pueden ser otros directorios. En prrafos anteriores
encontrar una descripcin ms completa.

Enlaces duros (hard-links)


Cada archivo en el sistema de archivos de GNU/Linux tiene su propio i-nodo. Un i-nodo guarda los atributos
del archivo y su posicin en el disco. Si necesita referirse a un archivo usando dos nombres de archivos
distintos, puede crear un enlace duro. El enlace duro tendr el mismo i-nodo que el archivo original y guarda el
mismo aspecto y comportamiento que el original. Con cada enlace duro creado, se incrementa la cuenta de
referencia. Cuando se borra un enlace duro, se decrementa la cuenta de referencia. Hasta que la cuenta de
referencia no alcanza a cero, el archivo permanece en el disco.

Nota: un enlace duro no puede existir entre dos archivos de particiones separadas. Esto es debido a que el
enlace duro se refiere al archivo original por i-nodo y el i-nodo de un archivo difiere entre sistemas de archivos

Enlace simblicos (soft-links)


A diferencia de los enlaces duros, que apuntan a un archivo por su i-nodo, un enlace simblico apunta a otro
archivo por su nombre. Esto permite que los enlaces simblicos apunten a archivos localizados en otras
particiones, discos, incluso en otras unidades de red.

Dispositivos de bloque (block devices)


Se usan como interfaz con dispositivos tales como discos. Un archivo de dispositivo de bloque tiene tres
caractersticas: el major number, el minor number y el carcter identificatorio de tipo de archivo, que es una b.
Ejemplo:
# ls l /dev/hda
brw-rw---- 1 root disk 3 0 May 5 2006 /dev/hda
La b representa que es un dispositivo de bloques. El 3 representa al major number y el 0 al minor number.
El major number de un archivo de dispositivo de bloque representa el controlador de dispositivo. Cuando se
accede a este archivo, el minor number se pasa al controlador de dispositivo como parmetro que le dice a que
dispositivo se accede. Por ejemplo, si hay dos puertos serie, compartirn el mismo controlador de dispositivo y
de esta forma el mismo major number, pero cada puerto serie tendr un minor number nico.

Dispositivos de carcter (carcter devices)


Similares a los dispositivos de bloques, los dispositivos de caracteres son archivos especiales que le permiten
acceder a dispositivos a travs del sistema de archivos. La diferencia es que los dispositivos de bloques trabajan
con grandes volmenes (disco rgidos, etc.), en cambio los dispositivos de carcter trabajan a un carcter por
vez (mdem, terminales, etc.). Comienzan con la letra c. Tienen tanto un major number y un minor number.
Ejemplo:
# ls l /dev/ttyS0
crw------- 1 root tty 4 64 May 5 2006 /dev/ttyS0

Pipes con nombre (named pipes)


Permiten comunicacin interprocesos. Usando el comando mknod, puede crear un archivo de tipo pipe
nombrado que puede abrir un proceso para lectura y otro para escribir, permitiendo a su vez que estos dos se
comuniquen con un tercero. El primer carcter de los permisos de archivos es una p.
Ejemplo:
# ls l mi_pipe
prw-r--r-- 1 root root May 5 2006 11:55 mi_pipe

Comandos de Linux
Cuando entramos al sistema, luego de loguearnos, nos encontramos en nuestro directorio de trabajo por
defecto. Si me logue en el sistema como root, estar en /root, si me logue como pepe, voy a estar en
/home/pepe. El home del usuario es el camino relativo o virtual, desde la raz del rbol hasta nuestra ubicacin
actual, es decir el directorio actual. Si ejecutamos la instruccin pwd (print working directory) veremos como
respuesta nuestro home. A partir de ese punto podemos movernos por el rbol de directorios.

Comandos bsicos para la gestin de archivos


Cambio de directorio (change directory): cd [pathname]
Hace que el directorio actual pase a ser el especificado en el pathname que se indica como parmetro.
Ejemplos:
$ cd .. cambia al directorio inmediatamente superior
$ cd /tmp se sita en el directorio tmp del nivel ms alto, o sea el que cuelga de /
$ cd practicas se sita en el directorio practicas, que est dentro del directorio actual. Preste
atencin que no lleva /, por lo tanto seguimos en la misma rama del rbol,
estamos bajando en la jerarqua del rbol.

Listado de un directorio (list): ls [opciones] [directorio ficheros]


Es uno de los comandos ms utilizados. Se usa para listar lo que contiene un directorio. Si ejecutamos ls sin
argumentos obtendremos un listado de todos los archivos que contiene el directorio en que el usuario est
posicionado.

Nota: Considere que un


directorio es un tipo especial
de archivo.
Sus opciones mas usadas son :

-a Nos muestra tambin los archivos ocultos (los que empiezan con .)
-l Hace un listado ms detallado, especificando para cada archivo sus permisos, el nmero de enlaces
rgidos ,el nombre del propietario, el nombre del grupo al que pertenece, el tamao en bytes y la
fecha de modificacin. Para una explicacin ms detallada vea Administracin de usuarios.
-F Coloca al lado de cada nombre listado un asterisco si es un archivo ejecutable (programa), o una
barra si es un directorio.
Ejemplo:
Haciendo un ls tendremos algo similar a lo
siguiente:
$ ls
Shell Shell.sgml

Si deseamos ver ms informacin sobre los archivos, hacemos esto:


$ ls -la
total 56
drwxr-sr-x 3 alexa alexa 4096 May 4 16:33 .
drwxr-s--- 94 alexa alexa 8192 May 4 16:31 ..
drwxr-sr-x 2 alexa alexa 4096 May 4 16:32 Shell
-rw-r--r-- 1 alexa alexa 5888 May 4 16:31 Shell.sgml
En cambio, si hacemos
esto:
$ ls -l Shell
total 2
-rwxrw-r-x 1 alexa alexa 48 May 6 21:38 archivo1
-rwxrw-r-- 1 alexa alexa 156 May 6 21:40 archivo2

Copiar ficheros (copy):


Un usuario puede copiar un archivo si tiene permiso de lectura sobre ese archivo. El comando cp puede ser
usado para copiar el contenido de un archivo a otro archivo. El arch_origen y destino no pueden ser el
mismo, y si destino es un archivo, entonces su contenido es destruido. Es decir, lo que est en arch_origen
se copia en destino. Si destino es un directorio, entonces los archivos_origen son copiados a ese directorio
destino. El comando cp es no-destructivo, porque el archivo fuente nunca es alterado.

Las opciones ms comunes son:


borra los archivos de destino ya existentes sin preguntar al
usuario. preserva permisos usuario y grupo del archivo a copiar.
copia recursivamente.

Ejemplos:
$ cp programa.c otro.c el archivo otro.c pasa a tener el contenido de programa.c. El
archivo programa.c no se modifica.
$ cp programa* .. copia todos los ficheros que empiecen por la secuencia de caracteres programa
al directorio superior.
Renombrar y mover ficheros (move): mv [opciones] arch_origen arch_destino
Este comando tiene dos funciones: mover archivos a otro lugar y/o cambiarles el
nombre. Ejemplo:
$ mv arch1 arch2 Si arch2 no existe, equivale a renombrar arch1 como arch2. Si arch2
existe, destruye arch2 y arch1 pasa a llamarse arch2.
Sus opciones principales son:
-f Borra los archivos de destino existentes sin preguntar al usuario. -i
Lo contrario que -f. Pregunta al usuario.
Ejemplo:
$ mv tp.txt tpnuevo.txt el archivo tp.txt pasa a llamarse tpnuevo.txt. Si ya exista un
archivo de nombre tpnuevo.txt, su contenido se pierde.
$ mv tp.txt ../tp.txt traslada el archivo tp.txt al directorio situado encima del actual.
Eliminar un fichero (remove): rm [opciones] archivos(s)
Este comando elimina el archivo (o los archivos) mandados como parmetro. Para que este comando funcione
es necesario tener permiso de escritura y, por lo tanto, de borrado sobre los archivos.
Ejemplo:
$ rm datos.jj elimina el archivo de nombre datos.jj.
Las opciones ms comunes son:
-f Fuerza el borrado de un archivo sin pedir confirmacin.
-i Forma interactiva, ahora s pide confirmacin para archivo o directorio a borrar.
-r Borra los contenidos de directorios recursivamente. Esta opcin se utiliza cuando quiero eliminar un
directorio que contiene informacin. Ms adelante ver la forma de borrar un directorio con otro
comando.
Ejemplo:
$ rm webserver.c repetidor.c elimina los archivos webserver.c y repetidor.c
$ rm -i webserver.c repetidor.c lo mismo, pero pide confirmacin para el borrado.
Ver el contenido de archivos
Los comandos que tenemos para mostrar contenido de archivos son: more, less y cat (del ingls concatenate:
poner uno atrs del otro). Son visores de texto, no editores. Ms adelante veremos el programa editor por
excelencia, el vi.
cat [opciones] [archivo1 [archivoN]]
Vuelca en pantalla el contenido de uno o ms ficheros de texto. Si hay ms de un fichero, el resultado es la
concatenacin de los contenidos de cada uno de ellos. Si el fichero (o los ficheros) no existen, devuelve un
mensaje de error. Si ningn archivo es proporcionado, o se encuentra el argumento - , cat lee de la entrada
standard.
Nota: Se pueden desplegar varios archivos en el monitor uno despus de
otro separando los nombres de archivo por medio de un espacio.

Si el archivo tiene ms lneas que una pantalla, sta se recorrer automticamente hasta que se haya llegado al
final del archivo, para ver el contenido de un archivo por pginas se puede utilizar el comando more.
more archivo(s)
Vuelca en pantalla el contenido de uno o ms archivos, adecuando su presentacin al nmero de lneas de la
terminal. Si hay ms de un archivo, el resultado es la representacin concatenada de los contenidos de cada uno
de ellos. Si el archivo no existe, devuelve un mensaje de error. Con el comando more podemos ver el contenido
del archivo desde el comienzo de ste, y podemos ir bajando en el texto hasta el final. Pero si queremos volver
el comienzo del archivo, no nos deja. En estos casos el comando adecuado es less.
less archivo
Aqu s podemos recorrer el archivo completamente, de principio a fin, y del final al principio.
Podemos scrollear el archivo.
Page-Up o Page-Down se utilizan para o sea, subir y
Nota: Combinando las teclas Shift y pasearse o bajar la pantalla. Esto
navegar en la pantalla, funciona tambin bajo xterm.

Consulta acerca del actual directorio (print working directory): pwd


Indica en que directorio se encuentra el usuario en ese momento. Por ejemplo:
alexa@par:~/Seminario$ pwd
/home/alexa/Seminario

Creacin de un nuevo directorio (make directory): mkdir directorio


Crea un directorio vaco con el nombre directorio Ejemplo:
$ mkdir dir1 $ ls
tp.txt datos dir1 practica
Crea el directorio dir1 en el directorio actual (Para verlo hago el listado con ls).

Eliminar un directorio (remove directory): rmdir directorio


Este comando es para eliminar el directorio de nombre directorio slo si ste est ya vaco. Para borrar un
directorio que contiene archivos en su interior, debe primero eliminar el contenido y luego usar rmdir para borrar el
directorio.
Otra forma es borrar el directorio con su contenido usando el comando rm con las opciones rf.

Creacin de un archivo vaco: touch archivo


Vimos como crear un directorio, con mkdir.
Ahora, Cmo se hace para crear un archivo, sin depender de un editor como el vi?
Puede usar el comando touch para crear un archivo vaco. En realidad este programa tiene otras utilidades, por
ejemplo para cambiar las fechas de acceso o modificacin de un determinado archivo.

Otros comandos
Tenemos en GNU/Linux la posibilidad de concatenar comandos, de redireccionar la salida de un comando a otro, o
a archivos. Esto se llama segn las traducciones al espaol, plomera o fontanera, porque para muchas de estas
tareas se utiliza el smbolo pipe, tambin llamado caera o tubo.
Los smbolos que se utilizan son <, >, >>, |, ;, ` `

Redireccin de E/S: < > >>


A travs de la redireccin podemos tomar la salida de un programa y enviarla automticamente a un archivo. Este
proceso lo maneja la propia shell en lugar del programa. Hay tres formas de redireccin: tomar de un archivo,
devolver a un archivo o aadir al final de un archivo. Para recoger la salida de un programa en un archivo, finalice
la lnea del comando con el smbolo mayor (>) y el nombre del archivo en el cual quiere guardar la salida redirigida.
Tambin es posible desviar la salida de pantalla hacia un archivo cualquiera mediante los smbolos > y >>.
Ejemplos:

$ cat arch1 > arch2 vuelca el contenido de arch1, pero en lugar de hacerlo en pantalla, lo hace en
arch2.

$ ls l > prueba en lugar de mostrar por pantalla el listado "largo" del directorio actual, lo
vuelca al archivo prueba. Si tuviera datos en el archivo prueba, me pisa con
la nueva informacin.

$ ls l >> prueba debe hacer esto si desea que la informacin nueva se agregue a lo que ya
contiene el archivo prueba.

$ echo Listado de Directorios y Archivos >> prueba


En este ejemplo agregaremos al archivo prueba el comentario
Listado de Directorios y Archivos al final del archivo.
Veamos algunos ejemplos ms:
$ date > arch1
$ ls >> arch1
vuelca en arch1 la fecha actual (eso es lo que hace el comando date) y luego
aade al final del fichero arch1 un listado del directorio actual.
$ cat arch1 arch2 > arch3
deja en arch3 el contenido de arch1 y arch2.
$ cat arch1 > arch3 $
cat arch2 >> arch3
es equivalente al ejemplo anterior.

Tambin es posible suministrar los datos de entrada de un programa desde un archivo, y no desde el teclado,
mediante <.
Ejemplo:
$ grep root < /etc/passwd
Ac lo que hace es buscar en el archivo /etc/passwd si hay un usuario llamado
root. (el comando grep se ver mas adelante)
$ ls > arch $
wc < arch
cuenta el nmero de palabras (wc por word count) que hay en arch, y lo que hay
en arch no es ms que el resultado de hacer ls.
Utilizacin de pipes: |
Las pipes son un mecanismo por el cual la salida de un programa se puede enviar como entrada de otro programa.
Los programas individuales se pueden encadenar juntos para convertirse en unas herramientas extremadamente
potentes.
Ejemplo:
$ cat /etc/passwd | less
El comando cat nos muestra el contenido del archivo /etc/passwd. El archivo
se nos va de pantalla, entonces si se lo enviamos a less, podremos navegar por
todo el contenido del archivo.
Nota: Este pipe es muy til para abrir archivos muy grandes.
$ ls -l | more
Aqu hacemos el listado de un directorio y para ir vindolo pantalla a
pantalla, envo la salida a more.
$ comando1 [argumento1] | comando2 [argumento2]
Esta lnea genera el mismo resultado que la siguiente secuencia: $
comando1 [argumentos] > temporal
$ comando2 [argumentos] < temporal $
rm temporal

Si quisiera concatenar comandos, de forma que no tenga que esperar el resultado de un comando para ejecutar el
siguiente, lo que puede hacer es escribirlos todos, separndolos con el smbolo punto y coma ( ;).
Ejemplo:
$ cd /etc ; ls l

Filtro de bsqueda grep expresin_a_buscar archivo


El comando grep, que apareci anteriormente se usa como filtro de bsqueda. Este programa me devuelve la lnea
del archivo que contiene la cadena especificada.
Ejemplo:
$ grep programacion materias
busca las apariciones de la expresin programacin en el archivo materias.
$ grep -n programacin materias
adems de buscar esa expresin, la opcin n (de numerado) indica el nmero de
cada una de las lneas en que aparece en el archivo materias.

Apstrofes de ejecucin
A veces necesitamos ejecutar algn comando que necesita de otro antes. Esto, sobre todo es muy til cuando
programe scripts. Veamos ejemplos para que se entienda mejor.
var1=`ps -ax | grep $1 | cut c=1-5`
En este ejemplo, si no pusiera todo lo que est del lado derecho de la igualdad,
entre apstrofes, el sistema dara error. Los apstrofes lo que hacen, es encerrar
la expresin, de forma que se ejecute completa, y luego lo asigna a la variable
var1.
Veamos otro ejemplo:
kill -9 `cat /var/run/gdm.pid`
En este caso, quiero matar una tarea ( gdm). Pero el programa kill , para
terminar una tarea necesita s o s el nmero de proceso ( pid). Como no lo s, lo
que hago es decirle que lo saque del archivo gdm.pid. El comando cat me
despliega el archivo. Este archivo solo contiene un nmero, que es lo que le llega a
kill -9.

Anda mungkin juga menyukai