You are on page 1of 6

Mdulo IV (Nivelador) Introduccin En este mdulo se estudiar Linux entrando a un nivel ms avanzado, donde se vern ciertos aspectos del

sistema operativo, que nivelan al asistente para permitirle comprender ms fcilmente los mdulos siguientes. Servicios del sistema operativo Linux, como todos los Unix, es un sistema multi tarea, esto le permite mantener corriendo varios procesos simultneamente. Los servicios del sistema operativo son generalmente demonios o procesos que estn corriendo "en background" (sin interactuar directamente con un usuario o terminal). Estos demonios brindan diferentes servicios. Todos estos servicios se pueden activar y desactivar sin tener que apagar o reiniciar el equipo. Esto es una caracterstica esencial en equipos que debe estar encendidos las 24 horas del da, los 365 das del ao. Linux nos da diferentes formas de activar y desactivar estos servicios. La forma que esta en todos los Linux (y tambin en la mayora de los UNIX) es via shell scripts de rc. Scripts de "rc" Los scripts de "rc", son shell scripts que permiten al administrador activar y desactivar servicios que brinda el sistema operativo. Cada uno de estos scripts representa un servicio especfico. Jerarqua de directorios ("rc") En RedHat Linux encontraremos la siguiente jerarqua de directorios. Esta jerarqua es muy parecida a todas las distribuciones de Linux, pero existen algunas diferencias. /etc/rc.d/ /init.d /rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d Como se puede observar la mayora de los directorios contienen un nmero, este nmero representa el "run-level" o nivel de corrida. Como se ha visto en el mdulo I de este curso, cada run-level define los servicios que se levantarn en esa sesin. Los scripts que hay dentro de cada uno de estos directorios definen estos servicios. El directorio /etc/rc.d/init.d es el que contiene todos los scripts de "rc". En este directorio generalmente se encontrarn nombres de archivos que hagan referencia al servicio que activan/desactivan. Por ejemplo "network" (script para activar el servicio de red).Por otro lado, en cada directorio "rc<nmero>.d" se encontrarn nombres de archivos con una connotacin especial. En la mayora de los casos los servicios dependen de que este corriendo alguno otro, para que trabajen normalmente. Por ejemplo el servicio de "web-server" no puede funcionar si el servicio de red no esta corriendo. Para resolver esta problemtica, se estipulo una forma de lograr que los scripts se ejecuten en un orden especfico. Esto se logra con los nombres de los archivos. Por ejemplo, el script S01network se ejecutar antes que el S34httpd (alfabticamente, el nombre de archivo S01network es anterior al S34httpd). Uso Todos los scripts de "rc" reciben como parmetro un argumento "start" o "stop" dependiendo si se

desea activar o desactivar el servicio. Ejemplo: /etc/rc.d/init.d/httpd start (activa el servicio de httpd) /etc/rc.d/init.d/httpd stop (desactiva el servicio de httpd) Existen algunos scripts que se les puede pasar como argumento (adems de "start" y "stop"), "restart", que reinicia el servicio. Esto es especialmente util cuando hacemos un simple cambio en un archivo de configuracin y solamente queremos hacerlos efectivos. (y de paso, ahorrarnos un comando). Administracin de crontbs El servicio de crontab permite definir tareas para que sean ejecutadas en un momento especifico en el tiempo (por ejemplo a las 14:00 hrs., todos los Martes). Este servicio es muy til para realizar tareas de mantenimiento como copias de respaldo (backups), verificacin del equipo o estadsticas de uso. Cada usuario puede definir sus propias tareas, y dichas tareas se ejecutaran con los privilegios del usuario que las defini. Comando crontab Las tareas que se activarn en el crontab se realizan a travs de un comando llamado "crontab". Comando: crontab Uso: crontab [opciones] [usuario] Descripcin: Permite ver o editar las tareas del crontab Opciones: "-l": lista el contenido de la tabla de tareas "-e": edita el contenido de la tabla de tareas "-u": Requiere la especificacin de un usuario y permite modificar las tareas del usuario referencia (siempre y en cuanto se tengan permisos) Cuando se ejecute "crontab -e" podremos modificar la tabla de tareas, para editarla se invocar al comando que existe en la variable $EDITOR o al editor "vi". Formato de la tabla de tareas (crontab) Minutos (0-59) Hora (0-23) Da del Mes (1-31) Mes (1-12) Da de la semana (0-7) Comando Se pueden utilizar asteriscos (*) para especificar "todos" (ejemplo: todos los das de la semana), guiones para especificar rangos (ejemplo: de Domingo a Mircoles, 0-3) o comas para momentos exactos (ejemplo: a los 0, 10 y 30 minutos, "0,10,30") Ejemplos: 0 * * * * /usr/local/bin/updatedb.sh (cuando el reloj maque minutos en 0, ejecutar el shell script /usr/local/bin/updatedb.sh, todas las horas, todos los das del mes, todos los meses y todos los das de la semana) 0 0 * * 1 /usr/local/bin/mail-stat.sh (a las doce de la noche, todos los Lunes se ejecuta el programa que saca estadsticas de correos enviados) Directorios de crontab El usuario "root" tiene la posibilidad de utilizar ciertos directorios para ejecutar tareas de cron,

adems de trabajar con el comando "crontab -e". /etc/cron.hourly En este directorio se pueden ubicar shell scripts que sern ejecutados a cada hora ("hourly": del ingls "todos las horas"). Los shell scripts que se copien a este directorio debern tener permisos de ejecucin. /etc/cron.daily En este directorio se pueden ubicar shell scripts que sern ejecutados diariamente ("daily": del ingls "todos los das"). Los shell scripts que se copien a este directorio debern tener permisos de ejecucin. /etc/cron.weekly En este directorio se pueden ubicar shell scripts que sern ejecutados una vez por semana ("weekly": del ingls "todos las semanas"). Los shell scripts que se copien a este directorio debern tener permisos de ejecucin. /etc/cron.monthly En este directorio se pueden ubicar shell scripts que sern ejecutados una vez por mes ("monthly": del ingls "todos los meses"). Los shell scripts que se copien a este directorio debern tener permisos de ejecucin. A decir verdad, en el crontab de root estan las definiciones para ejecutar las tareas contenidas en estos directorios. No es una funcion interna del crontab, sino una simple definicin. Filtros Los filtros son muy utilizados en Linux y sirven para acotar o cambiar texto plano. Con los filtros, se puede atrapar la salida estndar de un comando y manipularla con mucha flexibilidad. Esto se utiliza mucho cuando se administra un equipo, ya que generalmente se necesita cambiar la informacin que devuelven los comandos estndares a algo ms comprensible para el usuario final. Algunos ejemplos podran ser: Revisar el archivo /var/log/maillog (archivo de monitoreo del servicio de correo electrnico) para armar una estadstica de cuantos correos se envan o reciben diariamente, semanalmente y por mes. Monitorear constantemente el archivo /var/log/secure para avisar al administrador cuando se produce algn ataque externo. Manipular la salida del comando "ps" (listado de procesos) para hacer un reporte de carga diaria del sistema. Etctera. Grep Comando: "grep" Uso: grep <patrn> [archivos...] Descripcin: El comando grep examina los archivos nombrados o la entrada estndar y muestra en pantalla cada lnea que contenga un caso de <patrn>. grep es de gran utilidad para encontrar ocurrencias de variables en programas o palabras en documentos; tambin sirve para seleccionar partes de la salida de un programa: Opciones: "-i": trata maysculas y minsculas como caracteres iguales "-l": muestra en pantalla el nombre del archivo donde se encontr el patrn (en vez de la lnea que contiene este patrn) "-v": muestra en pantalla todas las lneas (excepto las que contengan el patrn buscado, modo inverso al default).

Ejemplos: # grep "From:" $MAIL (muestra en pantalla todos los remitentes de los correos que haya en nuestra casilla) # grep "From:" $MAIL | grep -v pedro (muestra en pantalla los remitentes de todos los correos que tengamos en nuestra casilla, excepto los que los envi pedro) # who | grep "root" (Comprueba si el usuario "root" est logueado en el sistema) # ps aux | grep "root" | grep -v grep (muestra en pantalla el listado de procesos del usuario root, sin mostrar la ejecucin de nuestro comando grep (util si somos root y no queremos falsos resultados). Existen ms filtros en Linux, entre ellos se destacan "awk" y "sed", pero dada la complejidad de los mismos, no se vern en este curso. Existe una versin de grep diseada para redes: es el ngrep. Compilacin La compilacin es el proceso que se le aplica a los archivos de texto que escribi un programador (con una sintaxis especfica llamada "lenguaje de programacin") para que los mismos se conviertan en archivos "binarios" (formato que entiende la computadora). Comando: "make" Uso: make [opciones] [seccion-Makefile] Descripcin: Este comando se utiliza para compilar, linkeditar e instalar un programa que requiera de la compilacin de varios fuentes (archivos .c). Generalmente, un programa medianamente grande, se integra de una biblioteca de funciones propias, y varios fuentes. El make conoce en qu orden de secuencia debe compilar todos estos fuentes y dnde debe instalarlos para que el usuario utilice el programa recin compilado. Comando: "gcc" Uso: gcc [opciones] <archivo.c> Descripcin: Este comando compila y linkedita los programas. Opciones: "-I": directorio que utilizar para buscar los archivos .h (headers) "-L": directorio donde buscar las bibliotecas para linkeditar "-l": nombre de la biblioteca a utilizar (sin las primeras 3 letras "lib") Ejemplo: # gcc -I /usr/local/include -L /usr/local/lib -lmath *.c Kernel Introduccin El kernel o ncleo es el corazn del sistema operativo, ms bien es el sistema operativo en s mismo. Todo lo que no sea el kernel se lo llama aplicacin, en el caso de Linux, el 95% de las aplicaciones son GNU. El ncleo se encarga de manejar una infinidad de cosas, entre ellas estn, manejo de memoria, perifricos, procesos, paquetes de red, todo el hardware en general, etc., etc. Generalmente, los ncleos que vienen pre-compilados en las distribuciones ms grandes, se adaptan a la mayora de las instalaciones, pero existen casos donde se hace necesario compilar e instalar un ncleo nuevo. Las razones pueden ser variadas, pero la mayora de las veces es porque se necesita una versin ms modera del ncleo (con problemas solucionados) o se instala un nuevo hardware que no esta contemplado en el ncleo de la distribucin.

Compilando el Kernel En caso de querer compilar sobre Red Hat 7.0 ver la aclaracin al final del documento. Poner la tarball (linux-2.4.0.tar.gz) en el directorio /tmp cd /usr/src rm linux tar xzvf /tmp/linux-2.4.0.tar.gz mv linux linux-2.4.0 ln -s linux-2.4.0linux cd /usr/src/linux make mrproper make xconfig # si estamos en entorno grfico (recomendado!) # puede usarse make menuconfig o make config (NO recomendado) make dep make clean make bzImage # ir a tomar cafe (mucho cafe) make modules make modules_install cp /usr/src/linux-2.4.0/arch/i386/boot/bzImage /boot/vmlinuz-2.4.0 # ojo, en la lnea anterior es vmlinuz (con z al final) cp /usr/src/linux-2.4.0/System.map /boot/System.map-2.4.0 cd /boot rm System.map ln -s System.map-2.4.0System.map RAMDISK inicial (NO es requerido usualmente en Red Hat Linux) mkinitrd /boot/initrd-2.4.0.img 2.4.0 Setup del LILO Agregar lo siguiente a /etc/lilo.conf image=/boot/vmlinuz-2.4.0label=new root=/dev/hda1 # reemplazar por la particin root correcta en tu sistema # ver la parte del lilo.conf correspondiente al kernel ACTUAL para # saber cul es la particin root que se est utilizando # # en caso de haber creado el RAMDISK inicial # eliminar el comentario de la siguiente lnea #initrd=/boot/initrd-2.4.0.img read-only Ejecutar lilo -t y si no tira ningn error ejecutar lilo -v y rebootear la mquina. OPCIONAL: crear un nuevo rescue disk (RECOMENDADO!!!)

mkbootdisk --device /dev/fd0 2.4.0 ----En Red Hat 7.0 es necesario modificar el archivo Makefile luego de descompactar la tarball, en la siguiente lnea, que es la que se encarga de indicar el compilador a utilizar: CC =($CROSSCOMPILE)gcc ... etc ... etc ... Debe quedar as (es todo la misma lnea): CC :=$(shell if which $(CROSS_COMPILE)kgcc > /dev/null 2>&1; then echo $(CROSS_COMPILE)kgcc; else echo $(CROSS_COMPILE)gcc; fi) -D__KERNEL__ -I $(HPATH) Parches. Instalacin de "Parches" Patch. zcat /tmp/patch-2.4.1 | patch - p

Para ver los mensajes que aparecen durante el booteo. Tenes que escribir el siguiente comando: dmesg | less (less es una version de more que permite moverse hacia atrras)

Indice Mdulo IV (Nivelador) 1 Introduccin 1 Servicios del sistema operativo 2 Scripts de "rc" 2 Filtros 4 Grep 5 Compilacin 5 Kernel 6 Introduccin 6 Parches. Instalacin de "Parches" Patch. 8

You might also like