Documente Academic
Documente Profesional
Documente Cultură
1.1.- INTRODUCCIN.
1.2.- DEFINICIN DE UN SISTEMA OPERATIVO Y SU ESTRUCTURA.
1.3.- CARACTERSTICAS PRINCIPALES DE LINUX.
1.3.1.- CARACTERSTICAS.
1.3.2.-DISTRIBUCIONES
3
6
9
9
11
13
13
19
19
22
28
31
45
45
45
50
58
58
62
65
65
68
69
69
69
71
72
72
78
78
79
88
88
88
102
107
107
107
107
110
110
116
118
118
124
129
130
130
130
137
137
147
147
147
147
148
148
148
149
149
149
149
150
150
152
153
153
un grupo en expansin de hackers de UNIX que quisieron hacer su sistema con sus
propias manos.
Existen numerosas versiones de UNIX para muchos sistemas, desde computadoras
personales hasta supercomputadoras como el Cray Y-MP. La mayora de las
versiones de UNIX para computadoras personales son muy caras. Cuando se
escriba este libro, una copia para una maquina 386 del UNIX System V de AT&T
costaba unos 1500 dlares estadounidenses.
Linux es una versin de UNIX de libre distribucin, inicialmente desarrollada por
Linus Torvalds en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la
ayuda de muchos programadores y expertos de UNIX a lo largo y ancho del mundo,
gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a
Linux y desarrollar nuevos mdulos o cambiarlo a su antojo. El ncleo de Linux no
utiliza ni una sola linea del cdigo de AT&T o de cualquier otra fuente de propiedad
comercial, y buena parte del software para Linux se desarrolla bajo las reglas del
proyecto de GNU de la Free Software Foundation, Cambridge, Massachusetts.
Inicialmente, solo fue un proyecto de aficionado de Linus Torvalds. Se inspiraba en
Minix, un pequeo UNIX desarrollado por Andy Tanenbaum, y las primeras
discusiones sobre Linux surgieron en el grupo de News comp.os.minix. Estas
discusiones giraban en torno al desarrollo de un pequeo sistema UNIX de carcter
acadmico dirigido a aquellos usuarios de Minix que queran algo mas.
El desarrollo inicial de Linux ya aprovechaba las caractersticas de conmutacin de
tareas en modo protegido del 386, y se escribi todo en ensamblador. Linus dice,
"Comenc a utilizar el C tras escribir algunos drivers, y ciertamente se acelero el
desarrollo. En este punto sent que mi idea de hacer un Minix mejor que Minix' se
hacia mas seria. Esperaba que algn da pudiese recompilar el gcc bajo Linux. . .
"Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs,
pero que pareca funcionar en mi PC) y un pequeo sistema de archivos. Aqu tenia
ya la versin 0.01 [al final de Agosto de 1991]: no era muy agradable de usar sin el
driver de diskettes, y no hacia gran cosa. No pense que alguien compilara esa
versin."
No se anuncio nada sobre esa versin, puesto que las fuentes del 0.01 jamas fueron
ejecutables: contenan solo rudimentos de lo que seria el nucleo , y se asuma que se
tenia acceso a un Minix para poderlo compilar y jugar con el.
El 5 de Octubre de 1991, Linus anuncio la primera versin "oficial" de Linux, la 0.02.
Ya poda ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero no
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
hacia mucho mas. La intencin era ser un juguete para hackers. No haba nada
sobre soporte a usuarios, distribuciones, documentacin ni nada parecido. Hoy, la
comunidad de Linux aun trata estos asuntos de forma secundaria. Lo primero sigue
siendo el desarrollo del kernel.
Linus escriba en comp.os.minix,
">Suspiras al recordar aquellos das de Minix-1.1, cuando los hombres eran hombres
y escriban sus propios drivers?
>Te sientes sin ningn proyecto interesante y te gustara tener un verdadero S.O.
que pudieras modificar a placer?
>Te resulta frustraste el tener solo a Minix?
Entonces, este articulo es para ustedes.
"Como dije hace un mes, estoy trabajando en una versin gratuita de algo parecido a
Minix para computadoras At-386. He alcanzado la etapa en la que puede ser
utilizable y voy a poner las fuentes para su distribucin. Es solo la versin 0.02. . .
pero he conseguido ejecutar en el bash, gcc, gnu-make, gnu-sed, compress, etc.
Tras la versin 0.03, Linus salto a la versin 0.10, al tiempo que mas gente
empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanzo la
versin 0.95, reflejando la esperanza de tener lista muy pronto una versin "oficial".
(Generalmente, la versin 1.0 de los programas se corresponden con la primera
tericamente completa y sin errores). Esto suceda en Marzo de 1992. Ao y medio
despus, en Diciembre del 93, el ncleo estaba en la revisin 0.99.pl14, en una
aproximacin asinttica al 1.0. Actualmente, el ncleo se encuentra en la versin 1.1
parche 52, y se acerca la 1.2.
Hoy Linux es ya un clnico de UNIX completo, capaz de ejecutar X Windows, TCP/IP,
Emacs, UUCP y software de correo y News. Mucho software de libre distribucin ha
sido ya portado a Linux, y estn empezando a aparecer aplicaciones comerciales. El
hardware soportado es mucho mayor que en las primeras versiones del ncleo.
Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y se han
encontrado que son comparables a las estaciones de trabajo de gama media de Sun
Microsystems y Digital.
>Quien iba a imaginar que este "pequeo" clonico de UNIX iba a convertirse en un
estndar mundial para las computadoras personales?
Conjunto de instrucciones.
Organizacin de la memoria.
Entrada y salida.
Estructura del bus.
Procesamiento de datos.
Almacenamiento de datos.
Transferencias de datos.
Control.
10
1.3.2.-Distribuciones
Se llaman distribuciones un conjunto de soportes (diskettes, CD-ROM ...) que
contengan lo necesario para instalar un programa en una maquina. No existe una
distribucin oficial de linux. Solo las distribuciones circulan. He aqu las principales :
slackware : es la distribucin de referencia histricamente. En la medida en que era
la nica distribucin mas o menos correctamente hecha hace unos 2 aos. En
nuestros das ella tiene una competecia correcta de parte de nuevas distribuciones
como RedHat y se puede temer que termine como SLS por sus dificultades para
evolucionar. Ademas solo funciona en un arquitectura Intel. Su tamao es de 113 Mb
(comprimida) o sea 89 diskettes. Es todo ELF. Utiliza la libc 5.3.12, el ncleo es el
2.0.0 y el Xfree86 3.2.0. La ultima versin es de Diciembre de 1996. Su sitio oficial es
: ftp.cdrom.com
Red Hat : es una distribucin inicialmente comercial, pero es igualmente disponible
va FTP. Es mucho mas profesional que la Slackware. Ademas es disponible para
otros tipos de arquitectura con procesadores " no Intel " (Alpha, Sparc). Versin 4.0
(Colgate). Esta distribucin se distingue por su seriedad, la simplicidad de sus
instalacin y sobre todo su extrema convivialidad. Ademas la puesta al da se hace
mediante un sistema de paquetes (los RPM). Sitio oficial : ftp.redhat.com Sitio Web :
http://www.redhat.com
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
11
12
la mayora de los sistemas, existe un sistema de archivos para todos los archivos del
directorio /usr, otro para /tmp, etc. El sistema de archivos raz es el principal, que
corresponde con el directorio raz, /.
Bajo Linux, cada sistema de archivos ocupa una particin del disco duro. Por
ejemplo, si tenemos un sistema de archivos para / y otro para /usr, necesitaremos
dos particiones para almacenar ambos sistemas.
Antes de instalar Linux, usted necesitara preparar sistemas de archivos para
almacenar el software de Linux. Por lo menos tiene que tener un sistema de archivos
(el sistema de archivos raz), y una particin reservada a Linux. La mayora de los
usuarios de Linux optan por almacenar todos sus archivos en el sistema de archivos
raz, pues en la mayor parte de los casos es mas facil de gestionar que tener
diferentes sistemas de archivos y particiones.
Sin embargo, usted puede crear varios sistemas de archivos para Linux si lo desea
por ejemplo, puede que quiera usar sistemas separados para /usr y /home.
Aquellos lectores con experiencia en administracion de sistemas UNIX sabrn como
usar diferentes sistemas de archivos adecuadamente.
>Por que usar mas de un sistema de archivos? Lo mas habitual es por seguridad; si,
por alguna razn, uno de sus sistemas de archivos resulta daado, los otros
normalmente no resultaran afectados. Por otro lado, si usted almacena todos sus
archivos en el sistema de archivos raz, y por alguna razn resulta daado, puede
perder todos los archivos de una vez. Sin embargo, esto no es lo habitual; si se
hacen copias de seguridad (backups) regularmente, no hay de que preocuparse.
Otra razn para utilizar varios sistemas de archivos es repartir el almacenamiento
entre varios discos duros. Si usted tiene, digamos, 40 megabytes libres en un disco
duro y 50 en otro, se pueden querer crear un sistema de archivos raz de 40
megabytes en el primer disco y un sistema /usr de 50 megabytes en el otro.
Actualmente no es posible que un sistema de archivos abarque varios discos; si su
espacio libre de disco esta repartido entre los discos, necesitara utilizar varios
sistemas de archivos para aprovecharlos.
En resumen, Linux requiere por lo menos una particin, para el sistema de archivos
raz. Si se desea crear varios sistemas de archivos, se necesitara una particin por
cada sistema de archivos.
Algunas distribuciones de Linux crean particiones y sistemas de archivos de forma
automtica, de modo que usted no necesita preocuparse demasiado de estos
asuntos.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
14
15
Si se usara una particin para el sistema de archivos raz mas all del cilindro 1023,
siempre podr arrancar Linux con un disco boot. Esto no es un inconveniente solo
tarda unos segundos mas que si se arrancara desde el disco duro.
16
particiones de Linux, pero por ahora nos ocuparemos solo de cambiar el tamao de
las actuales.
Supongamos que usted tiene un solo disco duro en su sistema, dedicado, por ahora,
enteramente a MS-DOS. Esto es, su disco duro contiene una particin MS-DOS,
conocida habitualmente como "C:". Puesto que este mtodo de reparticionado
destruir todos los datos de la particin, necesita crear un disco de sistema MS-DOS
"arrancable" que contenga lo necesario para ejecutar FDISK y restaurar el software
desde el backup cuando se complete el proceso de reparticionado.
En muchos casos, se pueden usar para esto los discos de instalacin de MS-DOS.
Sin embargo, si necesita el disco de sistema, formateelo mediante el comando
FORMAT /s A:
Copie en ese disco todas las utilidades de MS-DOS necesarias (normalmente, casi
todo lo que hay en el directorio \DOS de su disco), as como los programas
FORMAT.COM y FDISK.EXE. Ahora se debe poder arrancar desde este diskette, y
ejecutar el comando
FDISK C:
para arrancar FDISK. La utilizacin de FDISK debera ser autoexplicativa, pero
puede consultarse la Documentacin de MS-DOS para obtener detalles. Cuando
comience el programa FDISK, utilice el men de opciones para mostrar la tabla de
particiones, y anote la informacin que se le muestre. Es importante guardar copia
de su configuracin original en caso de que quiera detener la instalacin de Linux.
Para borrar una particin, seleccione la opcion del men "Delete an MS-DOS
Partition or Logical DOS Drive" (Eliminar particin o unidad lgica DOS). Especifique
el tipo de particin que desea borrar (primaria, extendida o lgica) y el numero de la
particin. Verifique todos los avisos que se le presenten.
Para crear una nueva particin para MS-DOS (mas pequea), seleccione la opcion
de FDISK
"1. Crear particin DOS o unidad lgica DOS". Especifique el tipo de particin
(primaria, extendida o lgica) y el tamao (en megabytes). FDISK deber crear la
particin.
Despus de hacer esto mediante FDISK, debe abandonar el programa y reformatear
las nuevas particiones. Por ejemplo, si se cambio el tamao de la particin C: se
tecleara el comando
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
17
FORMAT /s C:
18
19
Sector
Es la menor unidad en el plato y son de 512 bytes cada uno.
Pista
Los sectores son secciones de una pista. Los sectores que forman una pista puede
ser ledos o escritos por una cabeza durante una sola revolucin del disco.
Cilindros
Las superficies son formateadas como pistas de datos concntricas, las cuales se
completan en una rotacin completa del disco por una posicin de cabeza dada. La
suma de pistas provistas por todas las cabezas en una posicin dada es conocida
como cilindro.
20
21
22
Un directorio puede tener varias entradas, donde cada una describe un archivo. Las
entradas pueden contener cierta informacin acerca del archivo o bien apuntar a
otras estructuras que la tengan.
23
Los bloques.
Casi todos los sistemas de archivo recortan los archivos en bloques de tamao fijo
que no necesitan ser adyacentes.
Qu tan grande debe de ser el bloque?
Tener una unidad de asignacin grande, como un cilindro, significa que todos los
archivos, aun uno de 1 byte, se le asigna un cilindro completo.
Una unidad de asignacin pequea, quiere decir que cada archivo consta de muchos
bloques.
La lectura de cada bloque requiere una localizacin y una demora rotatoria, de modo
que un archivo de muchos bloques ser lenta.
24
25
Almacenamiento en archivos.
Un archivo consta de una sucesin de bloques, el sistema de archivo debe contar
con alguna manera de llevar el control de los bloques de cada archivo.
La forma ms evidente (el almacenamiento consecutivo de los bloques), suele no ser
viable por los archivos pueden crecer.
Un mtodo que resulta adecuado consiste en almacenar los bloques de un archivo
como una lista enlazada.
Desventajas :
1.- El nmero de bytes de datos en un bloque ya no es potencia de dos.
2.- El acceso al azar es costoso, hay que leer todos los bloques anteriores antes de
localizar un dato.
26
27
Nodos i (UNIX)
Por cada archivo de UNIX hay una tabla pequea (en el disco) llamada nodo i. Esta
contiene informacin contable y de proteccin.
28
Solo la instalacin clase custom nos permite una flexibilidad total. La instalacin
clase workstation y clase server se instalan automticamente y pasan al proceso
de instalacin omitiendo ciertos pasos.
La clase de instalacin Workstation.
La clase de instalacin workstation es la ms apropiada para aquel que es nuevo en
el mundo de linux. Contestando unas cuantas preguntas, se puede tener corriendo el
Red Hat Linux en un momento dado.
Una instalacin clase workstation remueve cualquier particin de linux en todos los
discos duros instalados ( y usa todo el espacio libre sin particionar) para crear las
siguientes particiones :
Una particin de 64MB para swap.
Una particin de16MB (montada como /boot) en la cual el kernel del linux y los
archivos relacionados residen.
Una particin de tamao variable (el tamao exacto depende del espacio
disponible en disco) (montada como /) en la cual todos los demas archivos
residen.
Este esquema de particiones del disco resulta en la configuracin ms sencilla del
sistema de archivos.
Nota : Se necesitarn aproximadamente 600 Mb de espacio libre en disco
para hacer una instalacin clase workstation.
Si el sistema actualmente corre Windows, una instalacin clase workstation
automticamente configura el sistema a un arranque dual usuando LILO.
La instalacin clase Server.
Una instalacin clase server es la ms apropiada si se quiere que el sistema
funcione como un servidor basado en Linux, y no se quiere tener un trabajo pesado
en la configuracin del sistema.
Una instalacin clase server remueve todas las particiones existentes en todos los
discos duros instalados, tal que slo hay que hacer sta clase de instalacin si se
est seguro que toda la informacin que tienen los discos se puede borrar. Cuando la
instalacin se completa, se encontrarn las siguientes particiones :
Una particin de 64 Mb para swap .
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
29
30
Discos duros
Dentro del PC pueden haber normalmente hasta cuatro discos en total, cada disco
duro tiene un nombre en Linux en funcin de como se haya instalado. Si el disco duro
es IDE y est funcionando en el primer canal como maestro se llamar /dev/hda, y
si es esclavo /dev/hdb.
En caso de que estemos en el segundo canal IDE los nombres correspondientes
sern /dev/hdc y /dev/hdd.
Es posible confundirse con todo esto y que no se conozca como es el disco duro. En
ese caso hay que tener en cuenta que casi todas las computadoras vienen de fbrica
con un solo disco duro que siempre es el /dev/hda.
Un caso a notar son los lectores de cdrom, los lectores normalmente funcionan
conectados como un disco duro ms, aunque hay varias excepciones. Por lo que el
nombre ser igual que si fuese un disco duro, en la mayor parte de los sistemas
/dev/hdb.
Si tu disco es SCSI entonces el esquema de nombres es parecido, pasando a ser en
este caso /dev/sd0, /dev/sd1,. . .
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
31
Puertos de serie
Los dos dispositivos ms comunes que se conectan a los puertos de serie suelen ser
ratones y mdems. En Linux existe dos maneras de nombrar a los puertos serie, en
la primera se llama al com1 /dev/cua0 y al com2 /dev/cua1. La segunda
manera es /dev/ttyS0 y /dev/ttyS1. Si es posible, se prefiere utilizar la segunda
manera porque la primera est llamada a desaparecer.
Existe un problema con los puertos serie en el hardware de la PC y que puede
provocar problemas desconcertantes. Este problema es independiente del sistema
operativo y consiste en que no se puede utilizar a la vez /dev/ttyS0 y
/dev/ttyS2, ni tampoco /dev/ttyS1 y /dev/ttyS3 (com1, com3 y com2, com4
en DOS, respectivamente).
Por lo general aquellos que tengan un ratn conectado a un puerto de serie lo
tendrn en /dev/ttyS0. Si el ratn es tipo PS/2 entonces estar conectado en un
dispositivo especial llamado /dev/psaux.
Puertos Paralelos
El uso ms habitual para un puerto paralelo en la PC es el de conexin a la
impresora. El primer puerto paralelo, donde se suele conectar la impresora, se llama
bajo Linux /dev/lp1.
Nombre en Linux
/dev/hda
/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4
/dev/hda5
32
/dev/hda6
/dev/hdb
/dev/hdc
/dev/hdd
/dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdc
/dev/fd0
/dev/fd1
/dev/ttyS0 o
/dev/cua0
/dev/ttyS1 o
/dev/cua1
/dev/ttyS2 o
/dev/cua2
/dev/ttyS3 o
/dev/cua3
/dev/psaux
/dev/lp1 (kernel
2.2.x /dev/lp0)
/dev/lp2 (kernel
2.2.x /dev/lp1)
Particiones
Los discos duros pueden ser divididos en compartimentos independientes entre s.
Estos compartimentos son llamados particiones y es el esquema que seguiremos
para repartir el disco duro entre DOS o Windows y Linux.
El nmero de particiones de un disco duro est limitado a cuatro, aunque una
particin primaria puede ser subparticionada por el sistema operativo que la use. La
informacin de como est particionado un disco duro es guardada al principio del
mismo, y es un estndar que siguen todos los sistemas operativos, adems cada
particin tiene un nmero que identifica de que tipo es. Suponiendo que tenemos
cuatro particiones primarias en /dev/hda, estas sern denominadas por Linux
/dev/hda1, /dev/hda2, /dev/hda3 y /dev/hda4. Las particiones lgicas que
crea DOS se denominarn a partir de /dev/hda5 en adelante.
Existe un primer sector en el disco duro que no pertenece a ninguna particin
llamado MBR 2 y contiene un pequeo programa de inicio que es el primero en
ejecutarse. El es el encargado de iniciar el sistema operativo, windows y DOS ponen
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
33
FIPS
Para poder crear las particiones de Linux es necesario quitar un trozo a la de
DOS/Windows. Esto normalmente significa destruir la particin actual y volver a crear
unas nuevas, perdiendo todos los datos que pudiese contener. Sin embargo existe un
programa que nos permite reparticionar sin perder los datos, este se llama FIPS, y es
una utilidad que suele venir en todas las distribuciones. En el cdrom de Red Hat
suele estar en el directorio D:\DOSUTILS.
Para utilizar FIPS debemos seguir una serie de pasos:
34
35
Proceso de instalacin
Nuestro objetivo es instalar Linux en una computadora con una configuracin tpica
de fabrica. Esta es un solo disco duro IDE, con una sola particin primaria dedicada
totalmente a Windows o DOS. Una vez terminada la instalacin deberemos tener una
primera particin dedicada a Windows o DOS, una segunda particin dedicada al
espacio de intercambio para Linux y la ltima para contener todo el sistema de
archivos de Linux. Adems instalaremos en el MBR del disco duro el LILO de forma
que podremos escoger entre los dos sistemas operativos instalados a la hora de
arrancar.
Iniciando la instalacin
Para poder instalar Linux se ha de iniciar una versin especial del sistema operativo
que contiene el cdrom de la instalacin preparada para realizar todo el proceso. Si la
computadora es moderna seguramente pueda iniciar el sistema operativo
directamente desde el CD-ROM con tan solo dejar el disco en la unidad lectora y
reiniciando el ordenador, es posible que se tengan que cambiar algunos parmetros
de la BIOS para poder iniciar desde el CDROM. Si no quieres estar cambiando los
parmetros no te preocupes, simplemente acta como si tu computadora no tuviese
esta caracterstica.
En caso de no tener una computadora ultramoderna inicia la computadora en modo
MS-DOS. Si usas Windows no vale con una ventanita con MS-DOS, tienes que
salirte de Windows. Una vez que estas en modo MSDOS vete a la unidad de cdrom,
y en el directorio /DOSUTILS ejecuta el comando AUTOBOOT con esta orden se
iniciar Linux directamente desde el CD-ROM y comenzar la instalacin. Si por
alguna falla no se puede iniciar la instalacin queda la posibilidad de arrancar desde
diskette.
Para hacerlo introduce un diskette sin errores en la unidad y ve al directorio
/DOSUTILS del CD-ROM. Encontraras un programa llamado rawrite.exe si lo
ejecutalo de esta forma:
C:\DOSUTILS>rawrite -f ..\images\boot.img -d a:
Pasos a seguir
Una vez comenzada la instalacin es cuestin de seguir cada paso que nos indica la
computadora. La primera pantalla es una presentacin de Red Hat Linux, a
continuacin veremos que se nos pregunta por el lenguaje que deseamos usar
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
36
37
Si se han seguido las instrucciones de esta gua existir una primera particin para
DOS/Windows y un espacio vacio a continuacin. Si este es el caso seleccionaremos
la opcin Add para anadir una nueva particin, Disk Druid nos presentar un men
en donde la primera pregunta es cual ser el punto de montaje (mount point), como
es una particin dedicada por completo a todo el sistema de archivos de Linux habr
que introducir el smbolo "/" que significa el directorio raz de Linux. En el
campo size (tamao) introduciremos el tamao que habiamos reservado para Linux
menos unos 30 Mbytes que guardaremos para la particin de swap. Por ltimo que
seleccionar el tipo de particin, que ser Linux Native.
Para la particin de intercambio volvemos a pulsar la opcin Add, en este caso no
introduciremos ningn punto de montaje. El tamao ser lo que queda de disco duro
y el tipo ser Linux swap. El tamao de 30 Mbytes para la particin de intercambio es
solamente orientativo, dependiendo del uso del sistema y de la memoria RAM que
tenga puede que se necesite ms o menos, algunas personas dicen que la particin
de intercambio debe de ser el doble de la memoria RAM. En cualquier caso no se
debe poner ms de 128 Mbytes a una particin intercambio porque es lo mximo que
admite Linux por particin. Si se necesita ms habr que crear ms particiones de
intercambio.
Es posible que Disk Druid te cree alguna de las particiones como extendidas y no
primarias. En este caso recuerda que se llamarn por ejemplo /dev/hda5 o
/dev/hda6. Con las dos particiones creadas podemos salir de Disk Druid,
seleccionaremos OK y nos preguntar si queremos salvar los cambios.
Contestaremos que S, si estamos de acuerdo con los cambios realizados.
38
39
40
existen varios "trucos" :-) ). Ms adelante se discutir sobre lo que es el root, las
claves y los usuarios.
Es recomendable crear un disco de arranque para situaciones de emergencia en las
que no nos sea posible iniciar Linux por mtodos normales". El proceso de
instalacin nos dar ahora la posibilidad de crear un disco de arranque, es
recomendable hacerlo.
Post-instalacin
La instalacin preguntar donde se desea poner el LILO, para ponerlo en el MBR
seleccionar /dev/hda. No se debe seleccionar /dev/hda1 porque seguramente
destruir el sistema de archivos de Windows/DOS. La ltima pregunta es si
deseamos introducir algn parmetro al LILO en el arranque, deja esta opcin en
blanco.
Y por fn hemos llegado al final, se nos informar que hemos terminado la
configuracin de Linux, y que esta est completa. La siguiente vez que reiniciemos la
computadora arrancara Linux.
Usuarios
La primera vez que arranque Linux despus de la instalacin nos mostrar una lnea
como sta:
localhost login:
A esta lnea se le denomina comunmente el login de Linux y en ella se pide al usuario
sentado delante del terminal que se identifique, lo primero que se introduce en este
caso es un nombre de usuario que sea vlido en el sistema. La primera vez el nico
nombre existente en el sistema ser root, con lo que estamos obligados a introducir
ese nombre. A continuacin el sistema mostrar lo siguiente:
localhost login: root
Password:
Con lo que el sistema invita al usuario a que introduzca la clave que tiene asignada el
usuario. En caso del root ser la que durante la que pidi el proceso de instalacin de
Linux. Mientras se teclea la clave se puede observar que las pulsaciones no son
mostradas en pantalla, esto es para evitar que alguien que est observando la
pantalla pueda ver una clave ajena.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
41
Una vez ha concluido este proceso estaremos identificados para el sistema operativo.
En este momento Linux aceptar ordenes escritas (poco a poco iremos viendo qu
rdenes acepta Linux) y responder en funcin de quin sea el usuario del terminal.
En Linux existe un usuario especial que se distingue de los dems usuarios en los
poderes que tiene sobre el sistema. Este usuario es normalmente conocido como
root y no tiene ninguna restriccin sobre el sistema. Cuando se instala Linux por
primera vez la nica cuenta que existe en el sistema es la del root, debido al poder de
este usuario es peligroso utilizarlo habitualmente para tareas cotidianas que no
necesiten los privilegios de root, esta cuenta se debe dejar para las tareas de
administracin y mantenimiento del sistema.
Para el trabajo cotidiano hay que crearse una cuenta personal sin privilegios que nos
proteja a nosotros mismos de cometer errores. Con el comando adduser miguel
crearemos una cuenta para el usuario miguel, el siguiente paso es establecer la clave
que usara Miguel, esto se hace con passwd miguel. Cuando establezcamos la
clave el sistema preguntar cual es la que se quiere poner, habr que introducir dos
veces a ciegas la clave.
La sintaxis completa del comando adduser es:
# adduser -u uid -g gid -c nombre -d home -s shell cuenta
donde: uid es el nmero de usuario, gid el nmero de grupo, nombre el nombre del
usuario (normalmente, nombre y apellidos), home el directorio principal del usuario,
shell el intrprete de comandos y cuenta es el nombre que pondremos como login. El
usuario root tiene como uid=0 y gid=0.
Para terminar una sesin se deber escribir la orden exit, con lo que volveremos al
login, hay que hacer notar que terminar una sesin no quiere decir apagar la
computadora ni que Linux deja de funcionar. Simplemente consiste en que un usuario
ha abandonado la terminal y lo deja libre para otro usuario, que puede ser el mismo
pero con otro nombre.
Ahora que ya est creado el usuario miguel, es posible realizar el proceso de
identificacin con otro usuario distinto de root. Con lo que ya no es obligatorio trabajar
con root.
42
LILO
Una vez instalado Linux este ser el sistema operativo que se inicie por defecto. Para
escoger otro sistema operativo habr que escribir el nombre que se le puso a la
particin cuando veamos el prompt de LILO y pulsar ENTER.
LILO boot: dos
Si LILO inicia tan rpido el sistema operativo que tenga por defecto que no da tiempo
de escribir nada, o cuando se escribe no aparece nada en pantalla hay que pulsar la
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
43
tecla shift (la tecla de las maysculas). En caso de que se haya olvidado que nombre
le pusieron a los sistemas operativos instalados se puede pulsar el tabulador y LILO
mostrar una lista.
Muchas veces la computadora es compartida por varias personas que no quieren
saber nada de LILO ni de Linux y lo unico que quieren es que se inicie su sistema
operativo sin problemas. Para ello se puede configurar LILO para que inicie un
sistema operativo por defecto, esto se hace entrando en el sistema como root y
escribiendo la orden :
# lilo -D dos -d 50
Con lo que configuramos DOS como sistema operativo por defecto y que cargue este
a los 5 segundos de no pulsar ninguna tecla. Suponiendo claro, que se haya definido
as el nombre de la particin.
44
45
46
/home : /home contiene los directorios "home" de los usuarios. Por ejemplo,
/home/larry es el directorio del usuario "larry". En un sistema recin instalado, no
habr ningn usuario en este directorio.
/lib : /lib contiene las imgenes de las libreras compartidas. Estos archivos
contienen cdigo que compartirn muchos programas. En lugar de que cada
programa contenga una copia propia de las rutinas compartidas, estas son
guardadas en un lugar comn, en /lib. Esto hace que los programas ejecutables
sean menores y reduce el espacio usado en disco.
/proc : /proc es un "sistema de archivos virtual". Los archivos que contiene
realmente residen en memoria, no en un disco. Hacen referencia a varios procesos
que corren en el sistema, y le permiten obtener informacin acerca de que programas
y procesos estn corriendo en un momento dado.
/tmp : Muchos programas tienen la necesidad de generar cierta informacin
temporal y guardarla en un archivo temporal. El lugar habitual para esos archivos es
en /tmp.
/usr : /usr es un directorio muy importante. Contiene una serie de subdirectorios
que contienen a su vez algunos de los mas importantes y tiles programas y archivos
de configuracin usados en el sistema.
Los directorios descritos arriba son esenciales para que el sistema este operativo,
pero la mayora de las cosas que se encuentran en /usr son opcionales para el
sistema. De cualquier forma, son estas cosas opcionales las que hacen que el
sistema sea til e interesante. Sin /usr, tendra un sistema aburrido, solo con
programas como cp y ls. usr contiene la mayora de los paquetes grandes de
programas y sus archivos de configuracin.
/usr/X386 : /usr/X386 contiene el sistema X Windows si usted lo instala. El
sistema X Windows es un entorno grfico grande y potente el cual proporciona un
gran numero de utilidades y programas grficos, mostrados en "ventanas" en su
pantalla. Si esta familiarizado con los entornos Microsoft Windows o Macintosh, X
Window le ser muy familiar. El directorio /usr/X386 contiene todos los ejecutables
de X Window, archivos de configuracin y de soporte.
/usr/bin : /usr/bin es el almacn real de programas del sistema UNIX.
Contiene la mayora de los programas que no se encuentran en otras partes como
/bin.
47
48
49
Cambiando de directorio.
Formato del comando :
cd nombre_del_directorio
1.- Cambiando de directorios usando el nombre de ruta relativo.
$ cd encoder
entra al directorio llamado encoder que est debajo del directorio actual.
3.- Usar el comando cd sin parmetros para cambiar al directorio home del usuario.
$ cd
50
Significado
Directorio actual
Directorio padre
Ruta absoluta al directorio home (solo
disponible en algunos shells)
Desplegando directorios.
Formato del comando :
ls [opciones] [ruta]
Listando directorios y archivos.
$ pwd
/home/jluis
$ ls /usr/etc
im_palette.pal imrc
$ ls /usr/games
banner
51
.bash_profile
.ncftp
.netscape
.newsrc-news
.pine-debug1
.pinerc
.sversionrc
.user.rdb
.wm_style
.x11amp
.xsession-errors
GNUstep
Office50
Xrootenv.0
amp-gepi
encoder
freeamp
mail
mp3
new.xinitrc
ns_imap
nsmail
outside.gz
x11amp
a.out*
amp-gepi/
encoder/
freeamp/
hola.c
mail/
mp3/
new.xinitrc
ns_imap/
nsmail/
outside.gz
x11amp/
Smbolo
/
*
@
(nada)
52
Tipo de
archivo y
permisos
- archivo
d
directorio
l liga
simblica
3
21
1
1
3
3
3
1
2
2
1
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
users
users
users
users
users
users
users
users
users
users
users
1024
1024
396
4148
1024
1024
1024
60
1024
1024
137
users
users
1024 Jan
797987 Jan
$ ls -ld freeamp
drwxr-xr-x
3 jluis
users
1024 Jan
5 13:23 freeamp-1.1.0
5 12:28 freeamp-1.1.0.tar.gz
5 12:30 freeamp
53
Listando subdirectorios.
Usar el comando ls R para desplegar los contenidos de un directorio y todos sus
subdirectorios.
$ ls -F
Makefile.am
Makefile.in
localfileinput.cpp
localfileinput.h
win32/
$ ls -RF
Makefile.am
Makefile.in
localfileinput.cpp
localfileinput.h
win32/
win32:
prj/
win32/prj:
fileinput.def
fileinput.dsp
fileinput.dsw
fileinput.mak
Comodines.
Asterisco (*)
El asterisco representa cero o ms caracteres. El asterisco seguido se le nombra
como el un carcter comodn.
El asterisco puede ser usado donde se usa un nombre de archivo o directorio.
$ ls
GNUstep
Office50
Xrootenv.0
a.out
amp-gepi
encoder
freeamp
hola.c
mail
mp3
new.xinitrc
ns_imap
nsmail
outside.gz
x11amp
$ ls n*
new.xinitrc
ns_imap:
iteso.mx
nsmail:
Drafts
Inbox
pop
Sent
Trash
Unsent Messages
54
a.out*
amp-gepi/
encoder/
freeamp/
hola.c
mail/
mp3/
new.xinitrc
ns_imap/
nsmail/
outside.gz
x11amp/
$ ls e*
BladeEnc072-i386-linux
BladeEnc072-i386-linux.tar.gz
$ ls encoder
BladeEnc072-i386-linux
BladeEnc072-i386-linux.tar.gz
Comodines
Signo de interrogacin (?)
El signo de interrogacin es un comodn que coincide con cualquier carcter.
$ ls
GNUstep
Office50
Xrootenv.0
a.out
amp-gepi
encoder
freeamp
hola.c
mail
mp3
new.xinitrc
ns_imap
nsmail
outside.gz
x11amp
$ ls ?.out
a.out
$ ls ?
ls: No match.
55
Creando directorios.
Formato del comando
mkdir nombre_directorio [nombre_directorio ...]
$ mkdir hola
$ cd hola
$ mkdir reportes
$ ls -dl reportes
drwxr-xr-x
2 jluis
users
$ mkdir reportes/semanales
$ ls -l reportes
total 1
drwxr-xr-x
2 jluis
users
semanales
$ mkdir uno dos tres
$ ls -F
dos/
reportes/ tres/
uno/
Borrando directorios.
Formato del comando.
rmdir directorio
rm r directorio
Borrando un directorio vaco.
$ rmdir dos
$ ls -F
reportes/ tres/
uno/
56
57
58
Propsito.
Pasar a la siguiente pantalla.
Pasar a la siguiente lnea.
Saltar una pantalla hacia delante.
Para desplegar el men de ayuda del
comando more.
Para salir y regresar al prompt
Para buscar una cadena hacia adelante.
59
MORE(1)
NAME
more - file perusal filter for crt viewing
SYNOPSIS
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]
DESCRIPTION
More is a filter for paging through text one screenful at a time. This
version is especially primitve. Users should realize that less(1) provides more(1) emulation and extensive enhancements.
OPTIONS
Command line options are described below. Options are also taken from
the environment variable MORE (make sure to precede them with a dash
(``-'')) but command line options will override them.
-num
60
61
El comando touch.
Para crear nuevos archivos vacos.
Formato :
touch nombre(s)
$ touch a b c
$ ls -F
a
uno/
62
Moviendo archivos
La orden mv mueve archivos en lugar de copiarlos. La sintaxis es muy sencilla.
Formato :
mv [-opciones] fuente destino
Como mover o renombrar archivos.
/home/larry/foo# mv termcap sells
/home/larry/foo# ls -F
bells
sells
shells
/home/larry/foo#
Ntese como termcap ya no existe, en su lugar esta el archivo sells. Esta orden
puede usarse para renombrar archivos, como acabamos de hacer, pero tambin para
mover archivos a directorios diferentes.
Nota: mv y cp sobreescribirn los archivos destino (si ya existen) sin consultar. Sea
cuidadoso cuando mueva un archivo a otro directorio: puede haber ya un archivo con
el mismo nombre que ser sobrescrito.
63
Una orden relacionada con rm es rmdir. Esta orden borra un directorio, pero solo si
esta vaco. Si el directorio contiene archivos o subdirectorios, rmdir se quejara.
64
65
1 larry
users
/home/larry/foo#
66
Los siguientes tres caracteres, r-- representan los permisos para los miembros del
grupo. El grupo al que pertenece el archivo es users. Como solo aparece un "r"
cualquier usuario que pertenezca al grupo users puede leer este archivo.
Los ltimos tres caracteres, tambin r--, representan los permisos para cualquier
otro usuario del sistema (diferentes del propietario o de los pertenecientes al grupo
users). De nuevo, como solo esta presente el "r", los dems usuarios pueden leer el
archivo, pero no escribir en el o ejecutarlo.
Aqui tenemos otros ejemplos de permisos de grupo.
-rwxr-xr-x
El propietario del archivo puede leer, escribir y ejecutar el archivo.
Los usuarios pertenecientes al grupo del archivo, y todos los dems usuarios pueden
leer y ejecutar el archivo.
-rw------El propietario del archivo puede leer y escribir. Nadie mas puede
acceder al archivo.
-rwxrwxrwx
Dependencias
Es importante darse cuenta de que los permisos de un archivo tambin dependen de
los permisos del directorio en el que residen. Por ejemplo, aunque un archivo tenga
los permisos -rwxrwxrwx, otros usuarios no podrn acceder a el a menos que
tambin tengan permiso de lectura y ejecucin para el directorio en el cual se
encuentra el archivo.
Si Larry quiere restringir el acceso a todos sus archivos, podra simplemente poner
los permisos de su directorio "home" : /home/larry a -rwx------. De esta forma
ningn usuario podr acceder a su directorio ni a ninguno de sus archivos o
subdirectorios. Larry no necesita preocuparse de los permisos individuales de cada
uno de sus archivos.
En otras palabras, para acceder a un archivo, debes de tener permiso de ejecucin
de todos los directorios a lo largo del camino de acceso al archivo, adems de
permiso de lectura (o ejecucin) del archivo en particular.
Habitualmente, los usuarios de un sistema UNIX son muy abiertos con sus archivos.
Los permisos que se dan a los archivos usualmente son -rw-r--r--, lo que permite
a todos los dems usuarios leer los archivos, pero no modificarlos de ninguna forma.
Los directorios, usualmente tienen los permisos -rwxr-xr-x, lo que permite que los
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
67
dems usuarios puedan moverse y ver los directorios, pero sin poder crear o borrar
nuevos archivos en ellos.
Muchos usuarios pueden querer limitar el acceso de otros usuarios a sus archivos.
Poniendo los permisos de un archivo a -rw------- no se permitir a ningn otro
usuario acceder al archivo. Igualmente, poniendo los permisos del directorio a -rwx----- no se permitir a los dems usuarios acceder al directorio en cuestion.
Brevemente, indicamos a que usuarios afecta all, user, group u other. Entonces
se especifica si se estn aadiendo permisos (+) o quitndolos (-). Finalmente se
especifica que tipo de permiso Read, write o execute. Algunos ejemplos:
chmod
a+r
chmod +r
toma a.
stuff
stuff
chmod
u+rwx
stuff
68
69
archivos del mismo sistema de archivos; enlaces simblicos (ver mas adelante) no
tienen esta restriccin.
Cuando borra un archivo con rm, est solamente borrando un enlace a un archivo. Si
usa el comando
# rm foo
solo el enlace de nombre foo es borrado; bar todava existir. Un archivo es solo
definitivamente borrado del sistema cuando no quedan enlaces a el. Usualmente, los
archivos tienen un nico enlace, por lo que el uso de rm los borra. Pero si el archivo
tiene mltiples enlaces, el uso de rm solo borrara un nico enlace; para borrar el
archivo, deber borrar todos los enlaces del archivo.
La orden ls -l muestra el numero de enlaces a un archivo (entre otra informacin).
# ls -l foo bar
-rw-r--r-2 root
-rw-r--r-2 root
#
root
root
12 Aug
12 Aug
5 16:51 bar
5 16:50 foo
Enlaces simblicos
Los enlaces simblicos son otro tipo de enlace, que es diferente al enlace duro. Un
enlace simblico permite dar a un archivo el nombre de otro, pero no enlaza el
archivo con un inodo.
La orden ln -s crea un enlace simblico a un archivo. Por ejemplo, si usamos la
orden :
# ln -s foo bar
crearemos un enlace simblico bar apuntando al archivo foo. Si usamos ls -i,
veremos que los dos archivos tienen inodos diferentes, en efecto.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
70
# ls -i foo bar
22195 bar
22192 foo
#
root
root
3 Aug
12 Aug
71
Como se puede ver, cada lnea que el usuario teclea (impresa en negrita) es
inmediatamente reenviada al monitor por cat. Cuando se esta leyendo de la entrada
estndar, los comandos reconocen el fin de la entrada de datos cuando reciben el
carcter EOT (end-of-text, fin de texto). Normalmente es generado con la
combinacin <ctrl-D>.
72
Veamos otro ejemplo. El comando sort toma como entrada lneas de texto (de nuevo
leer desde stdin si no se le proporcionan nombres de archivos en la linea de
comandos), y devuelve la salida ordenada a stdout. Pruebe lo siguiente:
/home/larry/papers# sort
bananas
carrots
apples
<ctrl-D>
apples
bananas
carrots
/home/larry/papers#
Podemos ordenar alfabticamente la lista de la compra... >no es til UNIX?
73
Hay otra forma de hacer esto. No solo puede ser re-direccionada la salida estndar,
tambin puede ser re-direccionada la entrada estndar usando el smbolo "<".
/home/larry/papers# sort < tems
apples
bananas
carrots
/home/larry/papers#
Tcnicamente, sort < tems es equivalente a sort tems, pero nos permite
demostrar que sort < tems se comporta como si los datos del archivo fueran
tecleados por la entrada estndar. El interprete de comandos es quien maneja las redirecciones. sort no recibe el nombre del archivo (tems) a leer, desde el punto de
vista de sort, esta leyendo datos de la entrada estndar como si fueran tecleados
desde el teclado.
Esto introduce el concepto de filtro. Un filtro es un programa que lee datos de la
entrada estndar, los procesa de alguna forma, y devuelve los datos procesados por
la salida estndar. Usando la redireccin la entrada estndar y/o salida estndar
pueden ser referenciadas desde archivos. El comando sort es un filtro simple:
ordena los datos de entrada y enva el resultado a la salida estndar. cat es incluso
mas simple, no hace nada con los datos de entrada, simplemente enva a la salida
cualquier cosa que le llega.
74
75
Redireccin no destructiva
El uso de ">" para redireccinar la salida a un archivo es destructivo: en otras
palabras, el comando
/home/larry/papers# ls > file-list
sobreescribe el contenido del archivo file-list. Si en su lugar, usamos el smbolo
">>", la salida ser aadida al final del archivo nombrado, en lugar de ser sobrescrito.
/home/larry/papers# ls >> file-list
76
77
Arranque vi tecleando
/home/larry# vi test
79
Usando el editor vi
lo que editara el archivo test. Debera ver algo como
~
~
~
"test" [New file]
La columna de caracteres "~" indica que esta al final del archivo.
Insertando texto
Esta ahora en modo rdenes; para poder insertar texto en el archivo, pulse <i>(lo que
le har entrar en modo insercin), y comience a escribir.
Now is the time for all good men to come to the aid of the
party._
~
~
~
Mientras inserta texto, puede escribir tantas lneas como desee (pulsando <return>
despus de cada una, por supuesto), y puede corregir los errores con la tecla de
borrado de carcter.
Para salir del modo de insercin y volver al modo de ordenes, pulse <esc>. Mientras
este en modo rdenes, puede usar las teclas del cursor para moverse por el archivo.
En nuestro ejemplo, como solo tenemos una lnea, el tratar de usar las teclas de lnea
arriba o abajo, probablemente har que vi emita un pitido.
Hay muchas formas de insertar texto a parte de la orden i. Por ejemplo, la orden a
inserta texto comenzando detrs de la posicin actual del cursor, en lugar de la
posicin actual del cursor. Por ejemplo, use la tecla de cursor a la izquierda para
desplazar el cursor entre las palabras "good" y
"men".
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
80
Now is the time for all good__men to come to the aid of the
party
|
~
~
~
~
Pulse <a> para iniciar el modo insercin, teclee "wo" y pulse <esc> para volver al
modo de rdenes.
Now is the time for all good women to come to the aid of the
party.
~
~
~
~
Para comenzar a insertar texto en la lnea de debajo de la actual, use la orden "o".
Por ejemplo, pulse <o> y teclee otra lnea o dos:
Now is the time for all good women to come to the aid of the
party
Afterwards, we'll go out for pizza and beer._
~
~
~
~
Solo recuerde que en cualquier momento esta en modo de ordenes (donde ordenes
como i, a o son validas, o en modo de insercin (cuando este insertando texto,
pulse <esc> para volver al modo de rdenes), o en modo de ltima lnea (donde
puede introducir comandos extendidos, como veremos mas adelante).
81
Borrando texto
Desde el modo de rdenes, la orden x borra el carcter debajo del cursor. Si pulsa
<x> cinco veces, terminara con:
Now is the time for all good women to come to the aid of the
party.
Afterwards, we'll go out for pizza and_
~
~
~
~
Puede borrar lneas enteras usando la orden dd (es decir, pulse <d> dos veces en
una fila). Si el cursor esta en la segunda lnea y teclea dd,
Now is the time for all good women to come to the aid of the
party.
~
~
~
82
Para borrar la palabra sobre la que se encuentra el cursor, use la orden dw. Site el
cursor sobre la palabra "good" y pulse dw.
Now is the time for all women to come to the aid of the party.
~
~
~
~
Modificando texto
Puede sustituir secciones de texto usando la orden R. Site el cursor en la primera
letra de "party" y pulse <R>, y escriba la palabra "hungry".
Now is the time for all women to come to the aid of the
hungry._
~
~
~
~
El uso de R para editar texto es bastante parecido al uso de las ordenes i y a, pero R
sobreescribe texto en lugar de insertarlo.
La orden r sustituye un nico carcter situado debajo del cursor. Por ejemplo, site el
cursor al comienzo de la palabra now" y escriba r seguido de C. Obtendr:
C_ow is the time for all women to come to the aid of the
hungry.
~
~
~
~
83
Ordenes de movimiento
Ya conoce como usar las teclas del cursor para moverse por el documento. Adems,
puede usar las ordenes h, j, k y l para mover el cursor a la izquierda, abajo, arriba y
derecha respectivamente. Esto es muy cmodo cuando (por alguna razn) sus teclas
de cursor no funcionen correctamente.
La orden w mueve el cursor al comienzo de la siguiente palabra; b lo lleva al
comienzo de la palabra anterior.
La orden 0 (cero) mueve el cursor al comienzo de la lnea actual, y la orden $ lo lleva
al final de la lnea.
Al editar archivos grandes, querr moverse hacia adelante y atrs a lo largo del
archivo mostrando una pantalla cada vez. Pulsando <ctrl-F>avanza el cursor una
pantalla hacia adelante y <ctrl-B> lo lleva una pantalla atrs.
Para llevar el cursor al final del archivo, pulse G. Puede tambin desplazarse a una
lnea arbitraria; por ejemplo, pulsando la orden 10G llevara el cursor a la lnea 10 del
archivo. Para desplazarse al comienzo, use 1G. Puede asociar ordenes de
desplazamiento con otras ordenes como es el borrado. Por ejemplo, La orden d$
borrara todo desde la posicin del cursor al final de la lnea; dG borrar todo desde la
posicin del cursor al final del archivo.
84
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
:
En el modo de ltima lnea hay disponibles una serie de ordenes extendidas. Una de
ellas es q!, la cual permite salir de vi sin guardar los cambios. La orden :wq salva el
archivo y sale de vi. La orden ZZ (desde el modo de ordenes, sin ":") es equivalente
a :wq. Recuerde que debe pulsar <enter> despus de introducir la orden para que
esta se ejecute en el modo ultima lnea.
Para salvar el archivo sin salir de vi, simplemente use :w.
lo cual significa que vi no quiere editar otro archivo hasta que salve el primero. En
este punto, puede usar :w para guardar el archivo original, y entonces usar :e, o
puede usar la orden
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
85
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
:e!
foo
El signo "!" le dice a vi lo que realmente desea usted editar el nuevo archivo sin
salvar los cambios del primero.
ls -F
obtendr :
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
letters/
misc/
papers/
~
~
86
Tambin puede salir a un intrprete de comandos desde vi, es decir, ejecutar una
orden desde dentro de vi y volver al editor una vez esta finalice. Por ejemplo, si usa la
orden
:!
ls F
87
88
Este archivo contiene informacin acerca del ratn, parmetros de la tarjeta grfica,
etc. El archivo XF86Config.ed es un ejemplo que incluye la distribucin. Copie este
archivo como XF86Config y modifquelo para su sistema.
Las paginas de manual para XF86Config explican el formato del archivo con
detalles. Lea ahora esas paginas si aun no lo ha hecho.
Le vamos a presentar un ejemplo de XF86Config. No tiene por que coincidir con el
ejemplo que incluye la distribucion, pero en todo caso tendrn estructura parecida.
Observe que el formato del archivo puede cambiar algo entre versiones de
XFree86. La informacin que le damos solo vale para la version 3.1.
Adems, no debe limitarse a copiar este archivo e intentar probarlo en su
sistema. Si lo hace, y, por error, enva a su monitor una frecuencia
demasiado alta para el puede producir una avera. No seria el primer caso.
Esto ha ocurrido especialmente con monitores de frecuencia fija. En
definitiva, asegrese de que su archivo XF86Config se corresponde con su
hardware antes de intentar utilizarlo.
Cada seccin del siguiente ejemplo de XF86Config se enmarca en un par de lneas
Seccin
<section-name>. . . EndSection. La primera parte del archivo es la seccin de
Archivos, que tendr el siguiente aspecto:
Section "Files"
RgbPath
FontPath
FontPath
EndSection
"/usr/X11R6/lib/X11/rgb"
"/usr/X11R6/lib/X11/fonts/misc/"
"/usr/X11R6/lib/X11/fonts/75dpi/"
La linea RgbPath pone la ruta de acceso a la base de datos de colores RGB para
X11R6, y cada linea FontPath pone rutas de acceso a directorios con fuentes X11.
Por lo general no tendr que modificar estas lneas. Tan solo debe comprobar que en
los directorios correspondientes se encuentran los archivos implicados (fuentes, etc).
La siguiente seccin es ServerFlags, que especifica algunos "flags" generales para el
servidor.
89
90
BusMouse
Logitech
Microsoft
MMSeries
Mouseman
MouseSystems
PS/2
MMHitTab
BusMouse es el que se usa para ratn Logitech en bus. Observar que los ratones
antiguos de Logitech usan Logitech pero los mas modernos usan Microsoft o
Mouseman. Este es un caso en el que el protocolo no coincide con la marca.
Device especifica el dispositivo donde esta el ratn. En muchos sistemas Linux se
encuentra en /dev/mouse, que suele ser un enlace al dispositivo verdadero (puerto
serie como /dev/cua0, etc).
Por supuesto, debe asegurarse de que el dispositivo que corresponda este en /dev.
La siguiente seccin es Monitor, que especifica las caractersticas de su pantalla
TRC. La seccin Monitor de XF86Config puede no ser nica, como sucede con
otras secciones. Es til si hay varios monitores conectados al sistema, o si se quiere
usar el mismo XF86Config en diferentes configuraciones hardware. Por lo general,
sin embargo, solo necesitar una seccin Monitor.
Section "Monitor"
Identifier
# !! Estos valores son validos solo para un monitor "CTX 5468 NI"
# No intente usarlo en su monitor si no es este mismo.
Bandwidth
HorizSync
VertRefresh
# Modos: Nombre
60
30-38,47-50
50-90
reloj
ModeLine "640x480"
25
ModeLine "800x600"
36
ModeLine "1024x768" 65
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
horiz
640 664 760 800
800 824 896 1024
1024 1088 1200 1328
vert
480 491 493 525
600 601 603 625
768 783 789 818
91
EndSection
La lnea Identifier se usa para dar a la seccin un nombre. Puede ser cualquier
cadena de caracteres y se usara despus para referirse a ese monitor.
HorizSync es el valor de frecuencia de sincrona horizontal vlida, en KHz. Si tiene
un monitor "multisync", puede tratarse de un rango (o diversos rangos separados por
comas). Si se trata de un monitor de frecuencia fija, ser un conjunto discreto de
valores como el siguiente:
HorizSync
92
flags
525
Esta es una temporizacin estndar VESA para modo 640x480. Utiliza un reloj de
25.175, que debe ser soportado por la tarjeta (esto lo veremos luego). Para incluir
esta entrada en el archivo XF86Config usara la linea
ModeLine "640x480" 25.175
Observe que el argumento <nombre> (en este caso, "640x480") es una cadena de
caracteres arbitraria, aunque se suele seguir la convencin de indicar la resolucin
del modo.
Para cada Modeline indicado, el servidor comprobar que sus valores caen dentro
de los rangos permitidos de frecuencias (especificados antes), anulando el modo si
no ocurre as. Principalmente, el valor de reloj no debe ser mayor que el indicado en
Bandwidth. Sin embargo, usar valores ligeramente superiores no suele dar
problemas.
Si los tiempos estndares en VESA no le funcionan correctamente (lo sabr cuando
despus los pruebe) mire los archivos modeDB.txt y Monitors, que incluyen
valores especficos para muchos modelos de monitores. Puede crear entradas
Modeline a partir de lo que vea en estos archivos. Asegrese de que solo usa
valores validos en su monitor. Vea que muchos monitores de 14 o 15 pulgadas no
soportan modos de alta resolucin como 1024x768 con seales de reloj lentas. Esto
significa que si no encuentra modos de alta resolucin para su monitor en esos
archivos, no podr usar dicha resolucin.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
93
94
Section "Screen"
Driver
"Accel"
Device
"#9 GXE 64"
Monitor
"CTX 5468 NI"
Subsection "Display"
Depth
16
Modes
"1024x768" "800x600" "640x480"
ViewPort
0 0
Virtual
1024 768
EndSubsection
EndSection
La linea Driver indica que servidor X utiliza. Los valores validos son:
Accel: Para servidores XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514,
XF86_P9000, XF86_AGX, y XF86_W32.
SVGA: Para el servidor XF86_SVGA.
VGA16: Para el servidor XF86_VGA16.
VGA2: Para el servidor XF86_Mono.
Mono: Para manejadores monocromticos no VGA que se encuentran en los
servidores XF86_Mono y XF86_VGA16.
Debe asegurarse de que /usr/X11R6/bin/X es un enlace simblico al servidor
que va a usar.
La lnea Device especifica el valor Identifier de la seccin Device que corresponda a
la tarjeta de vdeo que se va a usar con este servidor. Antes, hemos creado una
seccin Device con la lnea :
Identifier "#9 GXE 64"
95
De esta forma, XFree86 intentar arrancar en el primero de los modos. Una vez que
ha arrancado, con las teclas <ctrl><alt><numeric> y <ctrl><alt><numeric> podr
cambiar a otro modo.
La mejor forma de empezar, cuando se esta configurando XFree86, es usar modos
de baja resolucin (como 640x480) que suelen funcionar siempre. Una vez que se
tenga una configuracin bsica que va bien, puede pasarse a modificar XF86Config
para soportar resoluciones mayores.
Virtual. Pone el tamao del rea de trabajo virtual. XFree86 es capaz de usar la
memoria sobrante de su tarjeta grfica para extender el tamao de su rea de
trabajo. Cuando mueve el raton a extremos de la pantalla, vera como la pantalla se
desplaza, accediendo as a todo el rea virtual. As pues, si usted trabaja con una
resolucin inferior, como 800x600 y pone un rea de 1024x768 (propia para 1 Mbyte
de DRAM y 8 bits por pixel) podr usar un rea de trabajo mas grande que la que
cabe en pantalla.
El mecanismo Virtual resulta interesante para aprovechar toda la memoria de la
tarjeta grfica, pero es limitado. Si quiere usar un rea de trabajo virtual, se
recomienda usar las facilidades que al respecto dan gestores de ventanas como
fvwm. El mecanismo aqui se implementa a base de ocultar ventanas, etc. en lugar de
ocupar toda la memoria de la tarjeta.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
96
Para mas detalle, vea las paginas de manual de fvwm, gestor de ventanas que
suelen traer los sistemas Linux por defecto.
ViewPort. Si usted utiliza la opcion Virtual descrita antes, puede usar ViewPort
para indicar en que coordenadas virtuales comenzar XFree86. Se suele usar
ViewPort 0 0 que pone el rea de trabajo en la esquina superior izquierda. Pero
si no se indica se pondr centrado, algo que quizs le interese mas.
Hay muchas otras opciones en esta seccin; vea las paginas de manual para
XF86Config para ms detalle. En la prctica no son necesarias esas otras opciones
para que funcione el sistema.
97
As pues los nombres de "chipsets" que este servidor tiene son mmio_928 y
s3_generic. En la pgina de manual para XF86_S3 encontrar la descripcin de
estos "chipsets" junto a algunas tarjetas que los utilizan. Para la #9 GXE 64 el
"chipset" es mmio_928.
Si no conoce que "chipset" usar, el servidor X puede intentar averiguarlo. Para ello,
ejecutar
X -probeonly > /tmp/x.out 2>&1
Aqui vemos los dos "chipsets" vlidos (mmio_928 y s3_generic) del servidor. Este
probo ambos y determin que la tarjeta usa el "chipset" mmio_928.
En la seccin Device del archivo XF86Config, aada una linea Chipset con el
nombre obtenido antes. Por ejemplo :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
98
Section "Device"
# Este es el identificador que le pusimos...
Identifier "#9 GXE 64"
# Aadimos esta linea:
Chipset "mmio_928"
EndSection
Ahora hay que determinar las frecuencias de reloj. Cada una de estas es
simplemente la frecuencia con la que la tarjeta puede enviar pixeles al monitor. Como
ya sabemos, estas frecuencias dependen de la resolucin usada.
En primer lugar debe echar un vistazo a los archivos mencionados antes (como
modeDB.txt) y ver si los relojes de su tarjeta estn listados. En su caso vera una
lista de 8 o 16 valores, todos ellos dados en Mhz. Por ejemplo, en modeDB.txt
encontramos lo siguiente para la tarjeta Cardinal ET4000:
# chip
ET4000
ram
1024
virtual
1024 768
clocks
25 28 38 36 40 45 32 0
default-mode
"1024x768"
flags
Como vemos, los relojes son 25, 28, 38, 36, 40, 45, 32 y 0 MHz.
En la seccin Devices del archivo XF86Config debe aadir una linea Clocks como la
siguiente (para nuestro ejemplo):
Clocks 25 28 38 36 40 45 32 0
25.18
28.32
38.02
36.15
40.33
45.32
32.00
00.00
99
Con esta linea podemos hacer la linea Clocks en XF86Config. Si hay muchos
valores y no caben en una linea puede crear mas lneas Clock, pero respete el orden
de todas formas.
Asegrese de que no hay ninguna linea Clocks en la seccin Devices cuando use el
comando X-probeonly puesto que en este caso no har pruebas reales de los
relojes, sino que probara solo los valores que haya en el archivo XF86Config.
Observe que algunas tarjetas aceleradas tienen chip de reloj programable (vea las
paginas de manual de XF86_Accel para mas detalle. Estas son aplicables a las
tarjetas S3, AGX y XGA-2). Este chip viene a permitir que el servidor X diga a la
tarjeta que relojes usar. Si este es el caso, no debe haber una lista de valores vlidos
de reloj en el archivo XF86Config. Si no, la lista de valores de reloj que devuelve Xprobeonly contendr solo uno o dos valores discretos de reloj, dejando el resto
copiados de los primeros o a cero.
Para placas con reloj programable, deber usar una linea ClockChip en lugar de
Clocks. Esta lnea da el nombre del chip correspondiente a la tarjeta. Esos nombres
se encuentran en las paginas de manual. Por ejemplo, en el archivo README.S3,
veremos que diversas tarjetas S3-864 utilizan un chip "ICD2061A", y deber existir la
linea
ClockChip "icd2061a"
100
Normalmente, el servidor X funcionara sin las opciones, pero conviene ponerlas para
aumentar el rendimiento de la tarjeta. Hay muchas opciones y muchas particulares de
cada tarjeta. Para utilizarlas, mire los archivos del directorio :
/usr/X11R6/lib/X11/doc
As pues, cuando haya acabado, tendr una seccin Devices como la siguiente:
Section "Device"
# Solo valida para la tarjeta #9 GXE 64 !
Identifier "#9 GXE 64"
Chipset "mmio_928"
ClockChip "icd2061a"
Option umber_nine"
Option "dac_8_bit"
EndSection
Observe que en muchos casos se requiere una lnea Clocks en lugar de Clockchip,
etc. Lo anterior es solo un ejemplo.
Hay otras opciones para la seccin Devices. Los detalles los vera en las pginas de
manual correspondientes.
101
La cuenta root
Los usuarios normales estn restringidos normalmente para que no puedan daar a
nadie mas en el sistema, solo a ellos mismos. Los permisos de los archivos en el
sistema estn preparados para que los usuarios normales no tengan permitido borrar
o modificar archivos en directorios compartidos por todos los usuarios (como son
/bin y /usr/bin. Muchos usuarios tambin protegen sus propios archivos con los
permisos adecuados para que otros usuarios no puedan acceder o modificar estos
archivos.
Estas restricciones desaparecen para root. El usuario root puede leer, modificar o
borrar cualquier archivo en el sistema, cambiar permisos y pertenencias en cualquier
archivo, y ejecutar programas especiales, como pueden ser los que particionan un
disco o crean sistemas de archivos. La idea bsica es que la persona o personas que
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
102
ejecutan y cuidan del sistema entren como root cuando sea necesario para realizar
tareas que no pueden ser ejecutadas por un usuario normal. Puesto que root puede
hacer todo, es fcil cometer errores que tengan consecuencias catastrficas cuando
se trabaja utilizando esta cuenta.
Por ejemplo, como un usuario normal, si inadvertidamente se intentase borrar todos
los archivos en /etc, el sistema no lo permitira. Sin embargo, como usuario root, el
sistema no dira nada. Es muy simple el daar el sistema utilizando root. La mejor
forma de evitar accidentes es:
Pensrselo dos veces antes de apretar <return> en un comando que pueda causar
dao. Por ejemplo, si se va a borrar un directorio, antes de pulsar <return> releer el
comando completo y asegurarse que es correcto.
No acostumbrarse a utilizar root. Cuanto ms confortable se encuentre uno
trabajando con el usuario root, ms seguro que se confundirn los privilegios con los
de un usuario normal. Por ejemplo, puede uno pensar que se esta conectado como
larry, cuando realmente se esta conectado como root.
Utilice un marcador distinto para la cuenta root. Se debe cambiar el archivo .bashrc
o el .login de root para poner el marcador del interprete a algo distinto del
marcador de usuario normal. Por ejemplo, mucha gente utiliza el carcter "$" como
marcador para los usuarios normales, y reserva el carcter "#" como marcador para
el usuario root.
Conectarse como root solo cuando sea absolutamente necesario. Y desconectarse
tan pronto como se haya terminado el trabajo. Cuanto menos se use la cuenta root,
menos posibilidades habr de daar el sistema.
Por supuesto, existe una variante de hackers de UNIX que utilizan root para
prcticamente todo. Pero cada uno de ellos ha cometido, en algn momento, algn
error tonto como root y corrompido el sistema.
La regla general es que hasta que se familiarice con la falta de restricciones de root,
y este cmodo utilizando el sistema sin dichas restricciones, procure conectarse
como root lo menos posible.
Por supuesto, todo el mundo comete errores. El mismo Linus Torvalds borro
accidentalmente una vez el rbol de directorios completo del ncleo de su sistema.
Horas de trabajo se perdieron para siempre. Afortunadamente, sin embargo, gracias
a su conocimiento del cdigo del sistema de archivos, fue capaz de reiniciar el
sistema y reconstruir el rbol de directorios del disco a mano.
103
104
105
106
Borrando usuarios
De forma parecida, borrar usuarios puede hacerse con los comandos userdel o
deluser dependiendo de que software fuera instalado en el sistema. Si se desea
"deshabitar" temporalmente un usuario para que no se conecte al sistema (sin borrar
la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en
/etc/passwd. Por ejemplo, cambiando la linea de /etc/passwd correspondiente a
kiwi a
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
107
cambiara la clave de larry. Solo root puede cambiar la clave de otro usuario de esta
forma. Los usuarios pueden cambiar su propia clave con passwd tambin.
En algunos sistemas, los comandos chfn y chsh estn disponibles, permitiendo a
los usuarios el cambiar sus atributos de nombre completo e interprete de conexin.
Si no, deben pedir al administrador de sistemas que los cambie por ellos.
Grupos
Como hemos citado anteriormente, cada usuario pertenece a uno o mas grupos. La
nica importancia real de las relaciones de grupo es la perteneciente a los permisos
de archivos, cada archivo tiene un "grupo propietario" y un conjunto de permisos de
grupo que define de que forma pueden acceder al archivo los usuarios del grupo.
Hay varios grupos definidos en el sistema, como pueden ser bin, Mail, y sys. Los
usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos
de archivos del sistema. En su lugar, los usuarios deben pertenecer a un grupo
individual, como users. Si se quiere ser detallista, se pueden mantener varios grupos
de usuarios como por ejemplo estudiantes, soporte y facultad.
El archivo /etc/group contiene informacin acerca de los grupos. El formato de
cada linea es
108
root:*:0:
usuarios:*:100:mdw,larry
invitados:*:200:
otros:*:250:kiwi
El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root.
El siguiente grupo, users, es para usuarios normales. Tiene un GID de 100. Los
usuarios mdw y larry tienen acceso a este grupo. Recurdese que en /etc/passwd
cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer
a mas de un grupo, aadiendo sus nombres de usuario a otras lneas de grupo en
/etc/group. El comando groups lista a que grupos se tiene acceso.
El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios.
El usuario kiwi tiene acceso a este grupo.
Como se puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces
se utiliza para dar una clave para acceder a un grupo. Esto es raras veces necesario.
Para evitar el que los usuarios cambien a grupos privilegiados (con el comando
newgroup), se pone el campo de la clave a "*".
Se pueden usar los comandos addgroup o groupadd para aadir grupos a su
sistema. Normalmente es mas sencillo aadir lneas a /etc/group uno mismo,
puesto que no se necesitan mas configuraciones para aadir un grupo. Para borrar
un grupo, solo hay que borrar su entrada de /etc/group.
109
for file in *
do
if grep -l include $file
then
more $file
fi
done
110
chmod +x prueba1.sh
mkdir util
mv prueba1.sh util
PATH=$HOME/util:$PATH
Variables de ambiente.
Variable de ambiente. Descripcin.
$HOME
El directorio home del usuario.
$PATH
La lista de directorios separada por dos puntos para la
bsqueda de comandos.
$PS1
El prompt.
$PS2
Un prompt secundario, usado cuando se requiere una
entrada adicional.
$IFS
Un campo separador de entradas. Una lista de caracteres
que son usados para separar palabras cuando el shell est
leyendo una entrada.
$0
Si se est ejecutando un script, el nombre del script.
$#
El nmero de parmetros pasados a un script.
$$
El identificador del proceso
$ saludo=Hola
$ echo $saludo
Hola
$ saludo="que tal"
$ echo $saludo
que tal
$ saludo=6+3
$ echo $saludo
6+3
Comillas.
Normalmente los parmetros estn separados por espacios en blanco, si se quiere
que un parmetro contenga uno o ms espacios en blanco, se deben de usar
comillas.
111
# prueba2.sh
myvar="Hola a todos"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo Dame un texto
read myvar
echo '$myvar' ahora es igual a $myvar
exit 0
$ prueba2.sh
Hola a todos
Hola a todos
$myvar
$myvar
Dame un texto
Adios a todos
$myvar ahora es igual a Adios a todos
Variables parmetros
Si el script es llamado con parmetros, algunas variables adicionales son creadas.
Aunque no se pasen parmetros, la variable de ambiente $# se pasa con el valor de
0.
Variable parmero. Descripcin.
$1, $2, ...
Los parmetros que son pasados al script.
$*
Una lista de parmetros, un una sola variable, separada por el
primer carcter en la variable de ambiente IFS.
$G
Una variacin en $*, que no usan la variable IFS.
112
$ IFS=''
$ set uno dos tres
$ echo "$@"
uno dos tres
$ echo "$*"
unodostres
$ IFS=' '
$ echo "$*"
uno dos tres
# prueba3.sh
saludo="Hola"
echo $saludo
echo "Estamos corriendo el programa $0"
echo "El segundo parmetro es $2"
echo "El primer parmetro es $1"
echo "La lista de parmetros es $*"
echo "El directorio del usuario es $HOME"
echo "Teclea un nuevo saludo"
read saludo
echo $saludo
echo "Aqu termina el script."
exit 0
113
Condiciones.
El comando test o [].
Introduciremos el comando test usando una de las condiciones ms simples:
checando para ver si un archivo existe.
if test f hola.c
then
...
fi
O se puede escribir
if [ -f hola.c]
then
...
fi
O bien podemos poner then en la misma lnea.
if [ -f hola.c]; then
...
fi
Comparacin de cadenas de caracteres.
Comparacin de cadenas
Cadena
Cadena1=Cadena2
Cadena1!=Cadena2
-n Cadena
-z Cadena
Resultado
Verdadero si la cadena no est vaca.
Verdadero si las cadenas son iguales.
Verdadero si las cadenas no son iguales.
Verdadero si la cadena no es nula.
Verdadero si la cadena es nula (una cadena vaca).
114
Comparacin aritmtica.
Comparacin aritmtica
Expresin1 eq Expresin2
Expresin1 ne Expresin2
Expresin1 gt Expresin2
Resultado
Verdadero si las expresiones son iguales.
Verdadero si las expresiones no son iguales.
Verdadero si Expresin1 es mayor a
Expresin2.
Expresin1 ge Expresin2 Verdadero si Expresin1 es mayor o igual a
Expresin2.
Expresin1 lt Expresin2 Verdadero si Expresin1 es menor a
Expresin2.
Expresin1 le Expresin2 Verdadero si Expresin1 es menor o igual a
Expresin2.
! Expresin
El operador ! niega la expresin y regresa
verdadero si la expresin es falta y viceversa.
Condiciones de archivos.
Condiciones de
archivos
-d archivo
-e archivo
-f archivo
-g archivo
-r archivo
-s archivo
-u archivo
-w archivo
-x archivo
Resultado
Verdadero si el archivo es un directorio.
Verdadero si el archivo existe.
Verdadero si el archivo es un archivo.
Verdadero si el identificador de grupo est establecido en el
archivo.
Verdadero si el archivo tiene permisos de lectura.
Verdadero si el archivo tiene tamao diferente de cero.
Verdadero si el identificador de usuario est establecido en el
archivo.
Verdadero si el archivo tiene permisos de escritura.
Verdadero si el archivo es ejecutable.
115
Estructuras de control.
if condicin
then
sentencias
else
sentencias
fi
for variable in valores
do
sentencias
done
while condicin
do
sentencias
done
until condicin
do
sentencias
done
116
117
TIME COMMAND
0:03 (bash)
0:00 ps
/home/larry#
118
tareas, usted podr ejecutar diferentes tareas al mismo tiempo, cambiando entre
cada uno de ellos conforme lo necesite.
>Cuan beneficioso puede llegar a ser esto?.
Supongamos que esta usted con su procesador de textos, y de repente necesita
parar y realizar otra tarea, con el control de tareas, usted podr suspender
temporalmente el editor, y volver al shell para realizar cualquier otra tarea, y luego
regresar al editor como si no lo hubiese dejado nunca.
Lo siguiente solo es un ejemplo, hay montones de usos prcticos del control de
tareas.
119
La serie de y-es continuar hasta el infinito, a no ser que usted la elimine, pulsando la
tecla de interrupcin, generalmente <ctrl-C>. Tambin puede deshacerse de est
serie de y-es redigiriendo la salida estndar de yes hacia /dev/null, que como
recordar es una especie de "agujero negro" o papelera para los datos. Todo lo que
usted enve alli, desaparecer.
/home/larry# yes > /dev/null
Ahora va mucho mejor, el terminal no se ensucia, pero el prompt del shell no retorna.
Esto es porque yes sigue ejecutndose y enviando esos intiles y-es a /dev/null.
Para recuperarlo, pulse la tecla de interrupcin.
Supongamos ahora que queremos dejar que el comando yes siga ejecutndose, y
volver al mismo tiempo al shell para trabajar en otras cosas. Para ello nos
enviaremos a yes a segundo plano, lo que nos permitir ejecutarlo, pero sin
necesidad de interaccin.
Una forma de mandar procesos a segundo plano es aadiendo un carcter "&" al final
de cada comando.
/home/larry# yes > /dev/null &
[1] 164
/home/larry#
Como podr ver, ha regresado al shell.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
120
yes >/dev/null
&
Ah esta!. Tambin puede usar el comando ps, como mostramos antes, para
comprobar el estado de la tarea.
Para eliminar una tarea, utilice el comando kill. Este comando toma como
argumento un nmero de tarea o un numero de ID de un proceso. Esta era la tarea 1,
as que usando el comando
/home/larry# kill %1
matara la tarea. Cuando se identifica la tarea con el numero de tarea, se debe
preceder el numero con el carcter de porcentaje (%").
Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo
para comprobarlo:
/home/larry# jobs
[1]+
Terminated
yes >/dev/null
/home/larry#
121
yes >/dev/null
122
Para relanzar la tarea en primer plano, use el comando fg (del ingles "foreground").
/home/larry# fg
yes >/dev/null
El shell muestra el nombre del comando de nuevo, de forma que tenga conocimiento
de que tarea es la que ha puesto en primer plano. Pare la tarea de nuevo, con <ctrlZ>. Esta vez utilice el comando bg para poner la tarea en segundo plano. Esto har
que el comando siga ejecutndose igual que si lo hubiese hecho desde el principio
con "&" como en la seccin anterior.
/home/larry# bg
[1]+ yes >/dev/null &
/home/larry#
Y tenemos de nuevo el prompt. El comando jobs debera decirnos que yes se est
ejecutando, y podemos matar la tarea con kill tal y como lo hicimos antes.
>Como podemos parar la tarea de nuevo?
Si pulsa <ctrl-Z> no funcionar, ya que el proceso est en segundo plano. La
respuesta es poner el proceso en primer plano de nuevo, con el comando fg, y
entonces pararlo. Como puede observar podr usar fg tanto con tareas detenidas,
como con las que estn segundo plano.
Hay una gran diferencia entre una tarea que se encuentra en segundo plano, y una
que se encuentra detenida. Una tarea detenida es una tarea que no se esta
ejecutando, es decir, que no usa tiempo de CPU, y que no esta haciendo ningn
trabajo (la tarea aun ocupa un lugar en memoria, aunque puede ser volcada a disco).
Una tarea en segundo plano, se esta ejecutando, y usando memoria, a la vez que
completando alguna accin mientras usted hace otro trabajo. Sin embargo, una tarea
en segundo plano puede intentar mostrar texto en su terminal, lo que puede resultar
molesto si esta intentando hacer otra cosa. Por ejemplo, si usted uso el comando
/home/larry# yes &
sin redirigir stdout a /dev/null, una cadena de y-es se mostraran en su monitor, sin
modo alguno de interrumpirlo (no puede hacer uso de <ctrl-C> para interrumpir tareas
en segundo plano). Para poder parar esas interminables y-es, tendra que usar el
comando fg para pasar la tarea a primer plano, y entonces usar |_ctrl-C_ |para
matarla.
123
Otra observacin. Normalmente, los comandos "fg" y "bg" actan sobre el ltimo
proceso parado (indicado por un "+" junto al nmero de tarea cuando usa el comando
jobs). Si usted tiene varios procesos corriendo a la vez, podr mandar a primer o
segundo plano una tarea especifica indicando el ID de tarea como argumento de fg
o bg, como en
/home/larry# fg %2
(para la tarea de primer plano numero 2), o
/home/larry# bg %3
(para la tarea de segundo plano numero 3). No se pueden usar los ID de proceso con
fg o bg.
Adems de esto, si usa el numero de tarea por si solo, como :
/home/larry# %2
es equivalente a :
/home/larry# fg %2
Solo recordarle que el uso de control de tareas es una utilidad de la shell. Los
comandos fg, bg y jobs son internos del shell. Si por algn motivo usted utiliza un
shell que no soporta control de tareas, no espere disponer de estos comandos.
Y adems, hay algunos aspectos del control de tareas que difieren entre Bash y
Tcsh. De hecho, algunos shells no proporcionan ningn control de tareas sin
embargo, la mayora de las shells disponibles para Linux soportan control de tareas.
124
Para planificar un trabajo para la hora (hh), minuto (mm), mes, da y ao indicados.
at hh:mm mes da ao
Tambin se puede indicar una fecha para un trabajo. Por ejemplo, para planificar un
trabajo a las 5:00 PM del 24 de enero, solo hay que escribir lo siguiente :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
125
# at 17:00 Jan 24
>lp /usr/sales/reports/*
>echo Archivos impresos | mail s trabajo realizado boss
><ctrl-D>
126
dentro de archivos crontab. Los tiempos se pueden indicar en minutos, horas, das
del mes, meses del ao o das de la semana.
El demonio cron
No es un comando ; es un "demonio" , proceso que se arranca al encender la
mquina y est permanentemente activo. Su misin es inspeccionar cada minuto los
archivos crontab de los usuarios y ejecutar los comandos que all se digan a los
intervalos horarios que hayamos marcado. Como se acaba se sealar , los crontab
son dependientes de cada usuario.
Se deben seguir los siguientes pasos para modificar , aadir borrar un archivo
crontab :
1 - Sacarlo a archivo usando el comando "crontab -l >/tmp/mio" , por ejemplo.
2 - Modificarlo con un editor de acuerdo a las instrucciones de formato que se
explican a continuacin.
3 - Registrar el nuevo archivo mediante el comando "crontab /tmp/mio" , por
ejemplo.
mira cada minuto el directorio /var/spool/crontabs y ejecuta los comandos
El archivo crontab
El formato del archivo es el siguiente :
#minutos horas dia mes mes dia-semana comando ( # = comentario )
minutos : de 0 a 59.
horas : de 0 a 23.
dia del mes : de 0 a 31.
mes : de 0 a 12.
da semana : de 0 a 6 ( 0 = domingo , 1 = lunes ...)
Aparte de la especificacin normal , pueden utilizarse listas , es decir , rangos de
valores de acuerdo con las siguientes reglas :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
127
128
129
4.4.- Utileras.
4.4.1.- Encontrando archivos y texto.
Por ltimo , veremos un comando de utilidad simililar a "ls" pero con mas opciones ;
el comando "find" muestra en pantalla directorios y/o archivos atendiendo a
opciones determinadas . Si bien la sintaxis es demasiado extensa para estudiarla en
su totalidad , conviene ver algunos
ejemplos :
El comando toma como argumentos declaraciones en el formato
find <directorio base> <opciones> [-print]
Por tanto , para sacar en pantalla todos los archivos y directorios del disco , valdra
con :
# find / -print
- Si se desean slo archivos slo directorios :
# find / -type f -print
130
El comando tar es utilizado normalmente para archivar archivos .El formato del
comando tar es :
tar opciones archivo1 archivo2 ...archivoN
donde opciones es la lista de comandos y opciones para tar, y archivo1 hasta
archivoN es la lista de archivos a aadir o extraer del archivo.
Por ejemplo, el comando :
# tar cvf backup.tar /etc
empaquetar todos los archivos de /etc en el archivo tar backup.tar.
El primer argumento de tar "cvf" es el "comando" tar. "c" le dice a tar que cree un
nuevo archivo de archivo.
La opcion "v" fuerza a tar en el modo detallado imprimiendo los nombres de los
archivos segn se archivan.
La opcion "f" le dice a tar que el siguiente argumento backup.tar es el nombre del
archivo a crear.
El resto de los argumentos de tar son los nombres de archivos y directorios a aadir
al archivo.
El comando
# tar xvf backup.tar
extraer el archivo tar backup.tar en el directorio actual. Esto puede ser peligroso
a veces cuando se extraen archivos de un archivo tar, los archivos antiguos se
sobreescriben.
Por otra parte, antes de extraer archivos tar es importante conocer donde se deben
desempaquetar los archivos. Por ejemplo, digamos que se archivaron los siguientes
archivos: /etc/hosts,/etc/group, y /etc/passwd. Si se uso el comando :
# tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
131
132
Juntndolo todo
Por lo tanto, para archivar un grupo de archivos y comprimir el resultado, se pueden
utilizar los comandos:
# tar cvf backup.tar /etc
# gzip -9 backup.tar
133
es equivalente a :
# tar cvf backup.tar /etc
# gzip backup.tar
134
135
136
137
Consultas potentes : RPM tambin est diseado para tener potentes opciones de
consulta. Usted puede hacer bsquedas de paquetes o de ciertos archivos a
travs de la base de datos en su totalidad. Usted puede tambin investigar a qu
paquete pertenece un archivo y de dnde proviene ste. Los archivos contenidos
en un paquete RPM se encuentran en formato comprimido, habitualmente con una
cabecera del archivo binario que contiene informacin til acerca del paquete y su
contenido, permitindole buscar paquetes individuales rpida y fcilmente.
Verificaciones del sistema : Otra caracterstica importante es la capacidad de
verificar paquetes. Si usted est preocupado porque ha borrado un archivo
importante de algn paquete, simplemente verifique el paquete. Usted ser
notificado de las anomalas. Ahora, usted puede reinstalar el paquete si es
necesario. Cualquier archivo de configuracin que usted hubiera modificado se
mantendr durante la reinstalacin.
Fuentes prstinas : Un objetivo crucial a la hora del diseo fue el permitir el uso de
la fuentes de codigo prstinas'', tal y como son distribuidas por los autores
originales del software. Con RPM, usted tiene las fuentes prstinas as como
cualquier actualizacin que fuera usada, mas instrucciones completas de
construccin. Esto es una gran ventaja por muchas razones. Por ejemplo, si
aparece una nueva versin de un programa, no se tiene necesariamente que
empezar desde el principio para compilarlo. Se pueden mirar las actualizaciones
para ver qu debe hacer. Todas las opciones internas de compilacin, y todos los
cambios que fueron hechos para hacer que el software se creara adecuadamente
son fcilmente visibles de esta manera.
Este objetivo puede parecer nicamente importante para los desarrolladores pero
tambin redunda en una mayor calidad de software para el usuario final. Nos gustara
dar las gracias a la gente de la distribucin BOGUS por el concepto original de las
fuentes prstinas.
Usando RPM
RPM tiene cinco modos bsicos de operacin (sin contar la construccin del
paquete): instalacin, desinstalacin, actualizacin, consulta y verificacin. Esta
seccin contiene un vistazo de cada modo. Para opciones y detalles completos
pruebe rpm --help, vea la pgina man'' de rpm.
Instalacin
Los paquetes RPM tienen tpicamente nombres de archivo como foo-1.0-1.i386.rpm,
que incluye el nombre
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
138
del paquete (foo), versin (1.0), desarrollo (1), y arquitectura (i386). Instalar un
paquete es tan sencillo como:
$ rpm -ivh foo-1.0-1.i386.rpm
foo
####################################
Como puede ver, RPM imprime en pantalla el nombre del paquete (el cual no es
necesariamente el mismo que el archivo, el cual puede ser 1.rpm), e imprime una
sucesin de smbolos de rejilla a medida que el paquete es instalado, como un
medidor del progreso de la instalacin.
La instalacin de paquetes est diseada para ser sencilla, pero puede obtener
algunos errores:
Paquete ya instalado
Si el paquete est ya instalado, se ver:
$ rpm -ivh foo-1.0-1.i386.rpm
foo
package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
Si se quiere instalar el paquete de todas maneras, se puede usar --replacepkgs
en la lnea de comandos, lo que le dice a RPM que ignore el error.
Conflicto de archivos
Si intenta instalar un paquete que contiene un archivo que ha sido ya instalado por
algn otro paquete, se ver:
# rpm -ivh foo-1.0-1.i386.rpm
foo
/usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
Para hacer que RPM ignore el error, use --replacefiles en la lnea de
comandos.
Dependencias no resueltas
139
Los paquetes RPM pueden depender'' de otros paquetes, lo cual significa que
requieren que otros paquetes sean instalados para funcionar correctamente. Si
intenta instalar un paquete para el cual existe una dependencia no satisfecha, usted
ver:
$ rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
Para arreglar este error se debern instalar los paquetes requeridos. Si se desea
forzar la instalacin de todas maneras (una mala idea ya que el paquete
probablemente no funcionar correctamente), use nodeps en la lnea de
comandos.
Desinstalacin
Desinstalar un paquete es tan sencillo como instalarlo:
$ rpm -e foo
Notese que hemos usado el nombre foo'' para el paquete, no el nombre del paquete
original foo-1.0-1.i386.rpm''.
Se puede encontrar un error de dependencias cuando intente desinstalar el paquete
si algn otro paquete instalado depende del que est intentando borrar. Por ejemplo:
$ rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
Para hacer que RPM ignore el error y desinstale el paquete de todas maneras (lo
cual es una mala idea porque el paquete que depende de ste probablemente falle y
no funcione correctamente), use --nodeps en la lnea de comandos.
Actualizando
Actualizar un paquete es casi como instalar un paquete.
$ rpm -Uvh foo-2.0-1.i386.rpm
foo
####################################
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
140
Consulta
Consultar la base de datos de paquetes instalados se realiza mediante la opcin :
rpm -q. Un uso simple es rpm -q foo lo que imprimir el nombre, versin y
nmero de desarrollo del paquete instalado foo:
$ rpm -q foo
rpm-2.0-1
En lugar de especificar el nombre del paquete, se pueden usar las siguientes
opciones con -q para especificar de qu paquete(s) quiere hacer una consulta. stas
son llamadas Opciones de Especificacion de Paquetes (Package Specification
Options).
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
141
Verificacin
Verificar un paquete es comparar la informacin sobre los archivos instalados desde
un paquete con la misma informacin del paquete original. Entre otras cosas, verificar
compara el tamao, chequeo MD5, permisos, tipo, usuario y grupo de cada archivo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
142
Chequeo MD5
Tamao del archivo
Enlace simblico
Modificacin de la fecha del archivo
Dispositivo
Usuario
Grupo
Modo (incluye permisos y tipos de archivo)
143
144
/usr/man/man4/ispell.4
/usr/man/man4/english.4
/usr/man/man1/unsq.1
/usr/man/man1/tryaffix.1
/usr/man/man1/sq.1
/usr/man/man1/munchlist.1
/usr/man/man1/ispell.1
/usr/man/man1/findaffix.1
/usr/man/man1/buildhash.1
/usr/info/ispell.info.gz
/usr/doc/ispell-3.1.18-1/README
Usted encuentra un nuevo RPM llamado koules, pero usted no sabe qu es. Para
averiguar algo de informacin sobre l, escriba:
# rpm -qip koules-1.2-2.i386.rpm
El resultado sera:
Name
: koules Distribution: Red Hat Linux Colgate
Version
: 1.2
Vendor: Red Hat Software
Release
: 2
Build Date: Mon Sep 02 11:59:12 1996
Install date: (none)
Build Host: porky.redhat.com
Group
: Games
Source RPM: koules-1.2-2.src.rpm
Size
: 614939
Summary
: SVGAlib action game; multiplayer, network
Description :
This arcade-style game is novel in conception and
excellent in execution. No shooting, no blood, no guts,
no gore. The play is simple, but you still must develop
skill to play. This version uses SVGAlib to run on a
graphics console.
Ahora se quiere saber qu archivos instala el RPM koules. Usted escribira:
# rpm -qlp koules-1.2-2.i386.rpm
El resultado es:
/usr/man/man6/koules.6
/usr/lib/games/kouleslib/start.raw
/usr/lib/games/kouleslib/end.raw
/usr/lib/games/kouleslib/destroy2.raw
/usr/lib/games/kouleslib/destroy1.raw
/usr/lib/games/kouleslib/creator2.raw
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
145
/usr/lib/games/kouleslib/creator1.raw
/usr/lib/games/kouleslib/colize.raw
/usr/lib/games/kouleslib
/usr/games/koules
Estos son slo algunos ejemplos. Conforme usted utilice el sistema encontrar
muchos ms usos para rpm.
146
Halt.
Modo de monousuario.
Modo Multiusuario sin NFS.
Modo multiusuario completo.
No usado
Modo multiusuario con interface X
Rearranque.
148
linux single
Esto nos debe de permitir arrancar en el modo de un solo usuario tal que se puede
arreglar el archivo inittab.
149
directorio
tipo
opciones
/dev/hda2
/dev/hda3
/dev/hda4
/proc
/
/usr
none
/proc
ext2
ext2
swap
proc
defaults
defaults
sw
none
150
Nombre de Comentarios
tipo
ext2
Sistema de archivos mas comn en Linux
Ext
Minix
Xia
Umsdos
151
El comando mount -av realmente monta todos los sistemas de archivos excepto el
sistema de archivos raz (en la tabla anterior, /dev/hda2). El sistema de archivos
raz es montado automticamente en tiempo de arranque por el nucleo.
En vez de utilizar el comando mount
a mano. El comando :
152
speedy.redhat.com
speedy.redhat.com(ro)
154