Info y Manuales /

Tuto Linux Capitulo 4/9 (Nivelador)

Participa en el tema Tuto Linux Capitulo 4/9 (Nivelador) en el foro Info y Manuales.
Módulo IV (Nivelador) Introducción En este módulo se estudiará Linux entrando a un nivel más ...

Buscar en este tema:
 
  •  
    #1 Tuto Linux Capitulo 4/9 (Nivelador)
    Módulo IV

    (Nivelador)

    Introducción

    En este módulo se estudiará Linux entrando a un nivel más avanzado, donde se verán ciertos aspectos del sistema operativo, que nivelan al asistente para permitirle comprender más fácilmente los módulos siguientes.
    Servicios del sistema operativo
    Linux, como todos los Unix, es un sistema multi tarea, esto le permite mantener corriendo varios procesos simultáneamente. Los servicios del sistema operativo son generalmente demonios o procesos que están 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 característica esencial en equipos que debe estar encendidos las 24 horas del día, los 365 días del año.
    Linux nos da diferentes formas de activar y desactivar estos servicios. La forma que esta en todos los Linux (y también en la mayoría 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 específico.
    Jerarquía de directorios ("rc")
    En RedHat Linux encontraremos la siguiente jerarquía de directorios. Esta jerarquía 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 mayoría de los directorios contienen un número, este número representa el "run-level" o nivel de corrida. Como se ha visto en el módulo I de este curso, cada run-level define los servicios que se levantarán en esa sesión.
    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 encontrarán 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<número>.d" se encontrarán nombres de archivos con una connotación especial. En la mayoría 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 problemática, se estipulo una forma de lograr que los scripts se ejecuten en un orden específico. Esto se logra con los nombres de los archivos. Por ejemplo, el script S01network se ejecutará antes que el S34httpd (alfabéticamente, el nombre de archivo S01network es anterior al S34httpd).

    Uso
    Todos los scripts de "rc" reciben como parámetro 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 (además de "start" y "stop"), "restart", que reinicia el servicio. Esto es especialmente util cuando hacemos un simple cambio en un archivo de configuración y solamente queremos hacerlos efectivos. (y de paso, ahorrarnos un comando).

    Administración 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), verificación del equipo o estadísticas 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 activarán en el crontab se realizan a través de un comando llamado "crontab".

    Comando: crontab
    Uso: crontab [opciones] [usuario]
    Descripción:
    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 especificación 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) Día del Mes (1-31) Mes (1-12) Día de la semana (0-7) Comando

    Se pueden utilizar asteriscos (*) para especificar "todos" (ejemplo: todos los días de la semana), guiones para especificar rangos (ejemplo: de Domingo a Miércoles, 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 días del mes, todos los meses y todos los días 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 estadísticas de correos enviados)

    Directorios de crontab

    El usuario "root" tiene la posibilidad de utilizar ciertos directorios para ejecutar tareas de cron, además de trabajar con el comando "crontab -e".

    •/etc/cron.hourly
    En este directorio se pueden ubicar shell scripts que serán ejecutados a cada hora ("hourly": del inglés "todos las horas"). Los shell scripts que se copien a este directorio deberán tener permisos de ejecución.

    •/etc/cron.daily
    En este directorio se pueden ubicar shell scripts que serán ejecutados diariamente ("daily": del inglés "todos los días"). Los shell scripts que se copien a este directorio deberán tener permisos de ejecución.

    •/etc/cron.weekly
    En este directorio se pueden ubicar shell scripts que serán ejecutados una vez por semana ("weekly": del inglés "todos las semanas"). Los shell scripts que se copien a este directorio deberán tener permisos de ejecución.

    •/etc/cron.monthly
    En este directorio se pueden ubicar shell scripts que serán ejecutados una vez por mes ("monthly": del inglés "todos los meses"). Los shell scripts que se copien a este directorio deberán tener permisos de ejecución.

    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 definición.
    Filtros
    Los filtros son muy utilizados en Linux y sirven para acotar o cambiar texto plano. Con los filtros, se puede atrapar la salida estándar de un comando y manipularla con mucha flexibilidad. Esto se utiliza mucho cuando se administra un equipo, ya que generalmente se necesita cambiar la información que devuelven los comandos estándares a algo más comprensible para el usuario final.
    Algunos ejemplos podrían ser:
    •Revisar el archivo /var/log/maillog (archivo de monitoreo del servicio de correo electrónico) para armar una estadística de cuantos correos se envían o reciben diariamente, semanalmente y por mes.
    •Monitorear constantemente el archivo /var/log/secure para avisar al administrador cuando se produce algún ataque externo.
    •Manipular la salida del comando "ps" (listado de procesos) para hacer un reporte de carga diaria del sistema.
    •Etcétera.
    Grep

    Comando: "grep"
    Uso: grep <patrón> [archivos...]
    Descripción:
    El comando grep examina los archivos nombrados o la entrada estándar y muestra en pantalla cada línea que contenga un caso de <patrón>. grep es de gran utilidad para encontrar ocurrencias de variables en programas o palabras en documentos; también sirve para seleccionar partes de la salida de un programa:
    Opciones:
    "-i": trata mayúsculas y minúsculas como caracteres iguales
    "-l": muestra en pantalla el nombre del archivo donde se encontró el patrón (en vez de la línea que contiene este patrón)
    "-v": muestra en pantalla todas las líneas (excepto las que contengan el patrón 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 ejecución de nuestro comando grep (util si somos root y no queremos falsos resultados).

    Existen más filtros en Linux, entre ellos se destacan "awk" y "sed", pero dada la complejidad de los mismos, no se verán en este curso. Existe una versión de grep diseñada para redes: es el ngrep.
    Compilación

    La compilación es el proceso que se le aplica a los archivos de texto que escribió un programador (con una sintaxis específica llamada "lenguaje de programación") para que los mismos se conviertan en archivos "binarios" (formato que entiende la computadora).

    Comando: "make"
    Uso: make [opciones] [seccion-Makefile]
    Descripción:
    Este comando se utiliza para compilar, linkeditar e instalar un programa que requiera de la compilación 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 dónde debe instalarlos para que el usuario utilice el programa recién compilado.

    Comando: "gcc"
    Uso: gcc [opciones] <archivo.c>
    Descripción:
    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
    Introducción

    El kernel o núcleo es el corazón del sistema operativo, más bien es el sistema operativo en sí mismo. Todo lo que no sea el kernel se lo llama aplicación, en el caso de Linux, el 95% de las aplicaciones son GNU.
    El núcleo se encarga de manejar una infinidad de cosas, entre ellas están, manejo de memoria, periféricos, procesos, paquetes de red, todo el hardware en general, etc., etc.
    Generalmente, los núcleos que vienen pre-compilados en las distribuciones más grandes, se adaptan a la mayoría de las instalaciones, pero existen casos donde se hace necesario compilar e instalar un núcleo nuevo. Las razones pueden ser variadas, pero la mayoría de las veces es porque se necesita una versión más modera del núcleo (con problemas solucionados) o se instala un nuevo hardware que no esta contemplado en el núcleo de la distribución.

    Compilando el Kernel

    En caso de querer compilar sobre Red Hat 7.0 ver la aclaración 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 gráfico (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 línea 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 partición root correcta en tu sistema
    # ver la parte del lilo.conf correspondiente al kernel ACTUAL para
    # saber cuál es la partición root que se está utilizando
    #
    # en caso de haber creado el RAMDISK inicial
    # eliminar el comentario de la siguiente línea
    #initrd=/boot/initrd-2.4.0.img
    read-only

    Ejecutar lilo -t
    y si no tira ningún error ejecutar lilo -v
    y rebootear la máquina.

    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 línea, que es la que se encarga de indicar el compilador a utilizar:

    CC =($CROSSCOMPILE)gcc ... etc ... etc ...

    Debe quedar así (es todo la misma línea):

    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. Instalación 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

    Módulo IV (Nivelador) 1
    Introducción 1
    Servicios del sistema operativo 2
    Scripts de "rc" 2
    Filtros 4
    Grep 5
    Compilación 5
    Kernel 6
    Introducción 6
    Parches. Instalación de "Parches" Patch. 8

    Que lo disfruten!!!!!!!!!

    Saludos
    Sir Tingal0
    UIN:92565677
    +
     
    0
    Me gusta
     
    | Más
  • #2

    lean
    Me gusta este mensaje
  • #3

    Muchas Gracias, realmente bueno
    Me gusta este mensaje
  • Usuario inexistente escribió hace 7 años ¿Mensaje inapropiado?

    #4

    sale!
    Me gusta este mensaje
  • #5 Re: Tuto Linux Capitulo 4/9 (Nivelador)

    gracias
    Me gusta este mensaje


Estadísticas del tema
  • 4 RESPUESTAS
  • 4706 VISTAS
  • 4 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB