Curso Introductorio a Linux


Indice
























Inicio del sistema
Aqui vimos como se inicia Linux y que archivos se leen al iniciar el sistema.
Linux utiliza el esquema SysV(System Five) de arranque del sistema. En este esquema, se tiene un script para cada programa o servicio que se debe ejecutar al iniciar el sistema y un archivo principal que se encarga de llamar a estos script.
Tambien existe el concepto de runlevel. Un runlevel viene a ser una configuracion de ejecucion del sistema. Asi, se pueden configurar varias configuraciones y pasar de una configuracion a otra.
Estos runlevel o configuraciones son a nivel de programas. Es decir, se definen que programas deben
estar corriendo y cuales no en un cierto runlevel.

Secuencia de booteo
Aqui se presenta un resumen de que pasa cuando Linux bootea.

  1. Se carga el kernel en memoria
    1. El kernel se carga por medio del lilo u otro boot manager. La mayor parte del kernel esta comprimido y la parte que no esta comprima se carga primero y luego descomprime la parte comprimida.

  2. Le llama a /sbin/init
    1. El init es el primer proceso que se ejecuta y es llamado directo desde el kernel.
    2. El init se configura con el archivo /etc/inittab. El init puede ejecutar tambien programas, por ejemplo los prompt de login de las terminales virtuales las levanta el y se especifica en el archivo /etc/inittab
    3. El init se queda corriendo todo el tiempo.
  3. Se leen archivos de configuracion
    1. El init lee el archivo /etc/inittab y luego llama al programa /etc/rc.d/rc para que levante los servicios del runlevel por defecto. El runlevel por defecto tambien se configura en /etc/inittab
    2. El /etc/rc.d/rc tambien ejecuta los script de inicializacion que estan en: /etc/rc.d/rc.*
    3. Estos son: el primero es rc.sysinit y el ultimo rc.local. Pueden haber otros como rc.serial que se ejecuta entre los dos anteriormente citados

  4. Se ejecutan los programas del runlevel por defecto
    1. Como habiamos visto, el int le llama a /etc/rc.d/rc y le pasa como parametro el runlevel al cual se quiere pasar.
    2. Asi, el rc ejecuta los scripts que estan en el directorio /etc/rc.d/rcx.d, donde x es el numero de runlevel

Introduccion a los runlevels
Como habiamos visto los runlevels son configuraciones de programas daemon o servicios. Los runlevels van de 0 a 6.
Los runlevel 0,1 y 6 estan reservados, los demas pueden ser usados por el usuario para configuraciones a medida.
Para saber que servicios ejecutar y cuales no, existen los directorios /etc/rc.d/rcx.d/
Existe un directorio para cada runlevel y dentro del mismo esta la configuracion del runlevel.
Por ejemplo el runlevel 3 esta configurado en: /etc/rc.d/rc3.d/
La forma de configurar un runlevel es a traves de links o enlaces simbolicos a servicios. Los servicios se levantan o bajan por medio de scripts, los cuales estan en el directorio   /etc/rc.d/init.d/
Entonces, si uno quiere que se ejecute un determinado servicio, crea un link de la forma: [S,K][00-99]nombre
Donde 'nombre' es el nombre del script que se encuentra en /etc/rc.d/init.d/
La S significa Start y la K Kill. Los numeros del 00 al 99 son el orden de ejecucion del script.
Asi, si queremos que el runlevel 3 se ejecute el servicio apache y no se ejecute el servicio sendmail, tendriamos
en el directorio /etc/rc.d/rc3.d/ lo sigte:
K30sendmail -> ../init.d/sendmail
S85apache -> ../init.d/apache

Los links con menor numero se ejcutan primero. Los links que empiesan con K se ejecutan primero que los que empiesan con S. Lo que hace el /etc/rc.d/rc es leer los links del directorio y si empiesa con una K, llama al script pasando como parametro la palabra stop. Si empieza con una S, le pasa el parametro start

Generalmente los numeros de K y S de un mismo servicio si se suman dan 100. Asi, si el apache se inicio con el numero de secuencia 85(esto es casi al final) al cerrar el sistema se tendria que bajar dentro de los primeros numeros, osea 15(casi uno de los primeros).


Introduccion a servicios
Los servicios ejecutan daemons o programas que corren todo el tiempo. Ejemplos de esto son: servidor web apache, servidor de email sendmail, etc.
Los servicios son scripts y se encuentran en el directorio: /etc/rc.d/init.d/
Para levantar un servicio, se ejecuta el script y se le pasa el parametro start. Para bajarlo, se le pasa el parametro stop.
Si no se le pasa ningun parametro, el script imprime las opciones de parametros validos.
Por ejemplo si modificamos el archivos de configuracion del apache y queremos bajar y luego levantar   el servicio
para que los cambios tengan efecto, podemos hacer esto:
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
Otra opcion es pasarle el parametro restart que hace lo mismo:
/etc/rc.d/init.d/httpd restart



Manejo de archivos
Por manejo de archivos entendemos todo lo que podemos hacer con un archivo, o al menos las funciones basicas. Estas son: copiar, mover, borrar, hacer un enlace simbolico, crear directorios y archivos.
Para realizar estas operaciones, existen los sigtes comandos:

Comando
Descripcion
cp
Copiar archivos
mv
Mover, renombrar archivos
rm
Borrar archivos
ln
Crear enlaces simbolicos o symbolic link s
touch
Crear archivos vacios
mkdir
Crear directorios

Opciones communes a los comandos: cp, mv, rm
-i
pregunta si se desea sobreescribir un archivo
-f
sobreescribe arhchivos sin preguntar
-v
muestra mas mensajes de las operacion realizadas
Por defecto, los comandos nunca preguntan si se desea sobreescribir un archivo, por eso siempre se recomienda usar la opcion -i. O crear un alias para ello, ej:
$ alias rm="rm -i"

A continuacion veremos una descripcion de la syntaxis de cada comando.
cp
cp se usa para copiar archivos, directorios y cualquier tipo especial de archivo.
Se recomienda usar siempre la opcion:
cp [opciones] archivo1 directorio1 Copia el archivo1 a directorio1
cp [opciones] archivo1 archivo2 directorio1
Copia los archivos archivo1 y archivo2 a directorio1
cp [opciones] archivo1 archivo2
Copia el archivo1 a archivo2
cp [opciones] directorio1 directorio2
Copia el directorio1 al directorio2. Si directorio2 no existe, lo crea

Las opciones mas usadas son:
-R
copiar recursivamente los directorio
-p
preservar atributos(duenho, fecha, etc)
-d
preservar los enlaces simbolicos(no copiar el archivo a donde apunta el enlace)
-a
equivalente a -dpR
-l
crear enlaces simbolicos, no copiar

Se recomienda usar siempre las opciones:
-ai

mv
mv se usa para mover archivos. Tambien para renombrarlos.
Syntaxis de uso mas comunes:
mv [opciones] arrchivo1 directorio 1
Mueve el archivo1 a directorio1
mv [opciones] archivo1 archivo2
Renombra el archivo1 a archivo2
mv [opciones] directorio1 directorio2
Mueve el directorio1 a directorio2. Si directorio2 no existe, lo crea

Se recomienda usar siempre la opcion:
-i

rm
El comando rm se usa para borrar archivos o directorios.
Syntaxis de uso mas comunes:
rm [opciones] archivo1 archivo2
borra los archivo1 y archivo2
rm -r direcorio1
borra el directorio1 y todo su contenido
Para el comando rm se recomienda fuertemente usar la opcion -i y solamente usar la opcion -f si se completa y absolutamente seguro de lo que se esta haciendo. Esto es debido a que el comando rm nunca pregunta si se quiere borrar un archivo.
Tambien es bueno borrar los direcotios con el comando rmdir, el cual solo borra un directorio solo si este esta vacio.

mkdir
Se usa para crear directorios.
El comando recive como parametro el nombre del directorio a crear.
Una opcion util es la '-p' que crea todos los directorios padres al directorio que queremos crear.
mkdir [-p] directorio1
Crea el directorio1


ln
Se usa para crear enlaces simbolicos(link) a un archivo o directorio. Es como crear un acceso directo a un archivo.
Se pueden crear enlaces de tipo: soft y hard.
Si un enlace es de tipo soft, no se incrementa el contador de uso del archivo al cual apunta. Asi, si se borra o mueve el archivo al cual apunta, el enlace deja de ser valido.
Si un enlace es de tipo hard, se incrementa en 1 el contador de uso del archivo al cual apunta. Asi, si se borra o mueve el archivo al cual apunta, este en realidad no se borra porque aun esta siendo apuntado por el link. En este caso, si se desea borrar el archivo apuntado, se debe borrar el archivo apuntado y el link.
ln [opciones] archivo_original nuevo_link
crea el link nuevo_link el cual apunta a archivo_original


touch
Se usa para crear un archivo vacio con la fecha actual o para cambiar la fecha de modificacion de un archivo existente a la fecha actual.
touch archivo1
Cambia la fecha de modificacion del archivo1, si este no existe, lo crea con tamanho 0.
touch se puede usar por ejemplo para crear banderas en script de bash. Por ejemplo, al comienzo de nuestro script creamos un archivo para indicar que el script s esta ejecutando. Luego, antes de salir del script borramos el archivo.



Usando wildcards (cartas salvajes)
Los wildcards son comodines para seleccionar varios archivos a la vez.
Un wildcard se denota usando el caracter '*' (asterisco).
Por ejemplo, si tenemos un directorio en donde todos los archivos teminan en .mpg, y se desea moverlos a otro directorio se puede seleccionar todos los archivos .mpg con: '*mpg'.
No hace falta colocar un punto entre el asterisco y la extension porque en Unix la extencion no proporciona ninguna informacion al sistema operativo. Estos dos wildcards con equivalentes:
'*mpg'
'*.mpg'
Para continuar con el ejemplo de mover todos los archivos .mpg a otro directorio, damos la sigte situacion:
- En el directorio /tmp existe varios archivos con extension .mpg
- Queremos crear un directorio llamado /tmp/videos y mover todos esos archivos ahi.
Solucion:
$ cd /tmp
$ mkdir videos
$ mv -i *mpg videos

No hace falta ir al directorio /tmp para ejecutar el comando, aqui hacemos lo mismo:
$ cd /etc
$ mkdir /tmp/videos
$ mv /tmp/*mpg /tmp/videos

Hay que tener mucho cuidado al usar los wildcards con el comando rm


Ejemplos:
Copiar un archivo a nuestro directorio personal y cambiarlo de nombre
$ cd
$ cp /usr/include/stdio.h .
$ cd /tmp
$ mv /home/yo/stdio.h /home/yo/stdio.h.original

Crear un directorio con basura y luego borrarlo
$ cd /etc
$ mkdir /tmp/basura
$ cp -a /usr/X11R6/bin/x*d /tmp/basura
$ cp -a /tmp/basura /tmp/basura2
$ rm -fr /tmp/basura
$ rm -f /tmp/basura2/*
$ rmdir /tmp/basura2

Usar una bandera en un script para que se ejecute solo una instancia:
--------------------------
#!/bin/sh
# script que corre una sola instancia

BANDERA=/tmp/bandera.lock

if [ -f ${BANDERA} ] ; then
echo "Ya existe una instancia de $0 corriendo. Saliendo ..."
exit 1
fi

# crear la bandera
touch $BANDERA

# ejectar aqui el proceso preferido

# estamos por salir
rm -f ${BANDERA}
exit 0
--------------------------





Arriba
Volver

© Oliver Schulze L.
vie jun 8 04:13:41 PYT 2001
Hosted by www.Geocities.ws

1 1