Los sistemas operativos unix / linux, usan el programa init como encargado de gestionar los niveles de ejecución en los que un programa queremos que trabaje. Probablemente en el arranque de nuestros sistemas, habremos observado que lo primero que se carga es el Init, siendo este el primer proceso en ejecutarse, tras la carga del Kernel. Implementa dos sistemas de inicio: System V, o BSD-Like. Estos sistemas de inicio indican los scripts de arranque para inicializar los diferentes servicios, programas o registros que sean necesarios para que el sistema funcione, como el usuario quiera o como el administrador estableciera.
En los sistemas Unix / Linux se especifican un total de hasta 7 niveles de ejecución (conocidos también como runlevels). En la gran mayoría de distribuciones, la especificación de los niveles de ejecución son del siguiente modo:
* Nivel de ejecución 0:
o Halt. Este nivel de ejecución se encarga de detener todos los procesos activos en el sistema, enviando a la placa base una interrupción para el apagado completo del equipo.
* Nivel de ejecución 1:
o Single. Nivel de ejecución monousuario, sin acceso a servicios de red. Este nivel es normalmente usado en tareas de mantenimiento del sistema, y el usuario que lo ejecuta es root.
* Nivel de ejecución 2:
o Al igual que el nivel de ejecución monousuario, pero con funciones de red y compartición de datos mediante nfs.
* Nivel de ejecución 3:
o Sistema multiusuario, con capacidades plenas de red, sin entorno gráfico. Este nivel de ejecución es el recomendado para sistemas de servidor, ya que evita la carga innecesaria de aplicaciones consumidoras de recursos (entornos gráficos).
* Nivel de ejecución 4:
o Normalmente no es usado.
* Nivel de ejecución 5:
o Es el mismo que el nivel de ejecución 3, pero con capacidades gráficas. Ideal para entornos de escritorio.
* Nivel de ejecución 6:
o Reboot. Este nivel de ejecución se encarga de detener todos los procesos activos en el sistema, enviando a la placa base una interrupción para el reinicio del equipo.
Los scripts encargados de las llamadas, específicos de cada nivel de ejecución se encuentran almacenados en las carpetas /etc/rc{0..6}.d/, siendo únicamente enlaces simbólicos hacia los scripts de las distintas aplicaciones.
Es decir, cuando elegimos acceder a nuestro sistema en cierto nivel de ejecución (por ejemplo, 3), los scripts init que se ejecutarán son los que se encuentren en la carpeta /etc/rc3.d/. El nombre del guión de ejecución se compone básicamente de tres elementos: si el nombre del guión comienza con una letra ‘K’, se está especificando que para ese nivel de ejecución específico el guión dará de baja (matar, o kill) los procesos iniciados por dicho guión. Por el contrario, si el nombre del guión comienza por la letra ‘S’ dicho guión iniciará (start) dicha tarea. Además, estos guiones se ejecutan en orden alfabético, por lo que hay que determinar cual es el orden de ejecución mediante la inclusión de un número de dos dígitos después de la primera letra del nombre del guión. El tercer elemento del nombre del guión especifica en si mismo el nombre del servicio o tarea con la cual se va a trabajar. Ejemplo:
[mfernandez@paquito Desktop]# cd /etc/rc.d/
[mfernandez@paquito rc.d]# ls
init.d rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local rc.sysinit
[mfernandez@paquito rc.d]# cd rc3.d/[root@mfernandez rc3.d]# ll
total 276
lrwxrwxrwx 1 root root 17 Apr 1 17:53 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 Apr 1 17:56 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 24 Apr 1 17:57 K02NetworkManager -> ../init.d/NetworkManager
lrwxrwxrwx 1 root root 17 Apr 1 17:53 S13portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Apr 1 17:54 S14nfslock -> ../init.d/nfslock
Los scripts de arranque de cada uno de los servicios, se colocarán generalmente en /etc/init.d, y mediante el programa chkconfig en RedHat o update-rc.d en sistemas debian y derivados, nos introducirá de forma automática el script en el nivel de ejecución indicado en este script. Al igual que introduce estos scripts en los diferentes niveles, también los eliminan, siendo de mucha ayuda, por el tiempo que nos ahorran.
Para establecer estos niveles directamente sobre el script, deberemos usar una cabecera en él, ejemplo:
#!/bin/sh
#
# iptables Start iptables firewall
#
# chkconfig: 2345 08 92
# description: Starts, stops and saves iptables firewall
Como podemos ver en el ejemplo, el nivel de ejecución en el que serán insertados es el 2, 3, 4, 5 y el comienzo de el script S (start) será S08, uno de los primeros. Y el de finalización K (kill) será K92, uno de los últimos.
En el directorio /etc/init.d podemos encontrar un archivo llamado skeleton, que será muy útil si queremos contruir nuestros propios scripts para aplicaciones que hayamos desarrollado, aplicaciones de terceros que necesitamos que estén como servicios, etcétera.









Sin comentarios
Post al azar
Deje sus comentario: