Todos los archivos relacionados con el arranque
del sistema están ubicados en el directorio
/etc/rc.d
. Aquí tiene la lista de los mismos:
$ ls /etc/rc.d init.d/ rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.local* rc.sysinit* rc* rc1.d/ rc3.d/ rc5.d/ rc.alsa_default* rc.modules*
Como ya se dijo,
rc.sysinit
es el primer archivo ejecutado por el
sistema. Este es el archivo responsable de poner en su lugar la
configuración básica de la máquina: tipo de teclado, configuración
de ciertos dispositivos, verificación del sistema de archivos,
etc.
Luego se ejecuta el script
rc, con el nivel de ejecución deseado como
argumento. Como hemos visto, el nivel de ejecución es un simple
entero, y para cada nivel de ejecución <x>
definido, debe haber un directorio
rc<x>.d
correspondiente. Entonces, en
una instalación típica de Mandriva Linux, puede ver que están
definidos seis niveles de ejecución:
1: modo monousuario; para ser usado en el caso de serios problemas o para la recuperación del sistema.
2: modo multiusuario, sin soporte para redes;
5: Como 3, pero con la ejecución de la interfaz gráfica de conexión;
Observemos, por ejemplo, el
contenido del directorio rc3.d
:
$ ls /etc/rc.d/rc3.d/ K09dm@ S12syslog@ S24messagebus@ S40atd@ S91dictd-server@ S01udev@ S13partmon@ S25haldaemon@ S55sshd@ S92lisa@ S03iptables@ S15cups@ S25netfs@ S56ntpd@ S95kheader@ S05harddrake@ S17alsa@ S29numlock@ S56rawdevices@ S99local@ S10network@ S18sound@ S33nifd@ S75keytable@ S11shorewall@ S20xfs@ S34mDNSResponder@ S90crond@ $
Como puede ver, todos los archivos de este directorio son vínculos simbólicos, y todos tienen una forma muy específica. Su forma general es:
<S|K><orden><nombre_del_servicio>
La S
significa arrancar (Start) el
servicio, y la K
significa detener
(Kill) el servicio. Los scripts se
ejecutan por número de orden ascendente, y si dos scripts tienen el
mismo número, se aplica el orden alfabético. También podemos ver
que cada vínculo simbólico apunta a scripts ubicados en
/etc/init.d
(excepto
local), script que es responsable de controlar
un servicio específico.
Cuando el sistema entra en un
nivel de ejecución dado, comienza por ejecutar los vínculos
K
en orden: el comando rc
busca donde apunta el vínculo, luego llama al script
correspondiente con un argumento solo: stop
(detener). Luego ejecuta los scripts S
, todavía
usando el mismo método, excepto por el hecho de que los scripts se
llaman con el argumento start
(iniciar).
Por lo tanto, sin mencionar a
todos los scripts, podemos ver que cuando el sistema entra en el
nivel de ejecución 3, primero ejecuta K09dm, es
decir, /etc/init.d/dm stop. Acto seguido, ejecuta todos
los scripts S
: primero
S01udev, que invoca a /etc/init.d/udev
start, luego S03iptables, y así
sucesivamente.
Armado con toda esta información, Usted puede crear su propio nivel de ejecución completo en pocos minutos (por ejemplo, usando el nivel de ejecución 4), o evitar el arranque o la detención de un servicio borrando el vínculo simbólico correspondiente.
También puede usar el comando
chkconfig para añadir, quitar, activar o
desactivar servicios desde niveles de ejecución dados. Use
chkconfig --add nombre_servicio para añadir
(activar) el servicio nombre_servicio
en todos
los niveles de ejecución soportados[32] y chkconfig
--del nombre_servicio para quitar (desactivar) el
servicio nombrado de todos los niveles de ejecución.
![]() | Sugerencia |
---|---|
Ejecute el comando chkconfig --list para saber qué servicios están disponibles, sus nombres, y el estado de los mismos en todos los niveles de ejecución definidos. |
Al ejecutar chkconfig --levels 35 sshd on se activará el servidor SSH
(sshd
) en los niveles de ejecución 3 y 5,
mientras que al ejecutar chkconfig --levels 3 sound off se quitará el soporte para el sonido en el nivel de
ejecución 3. Si omite el parámetro --levels lista_de_niveles
, el servicio nombrado se activará o
desactivará en los niveles de ejecución 2, 3, 4 y 5. Note sin
embargo, que Usted puede terminar habilitando servicios en niveles
de ejecución sin el soporte apropiado para dichos servicios, por
lo que es mejor especificar los niveles de ejecución que se afectarán.
En un sistema activo los servicios se pueden controlar con el comando service incluso cuando no están configurados para correr en un nivel de ejecución en particular. La sintaxis es la siguiente:
service nombre_servicio acción
Donde
nombre_servicio
es el nombre del servicio a
controlar tal y como lo lista chkconfig --list,
y acción
es una de:
Inicia el servicio nombrado. Por
favor, note que los servicios le advertirán cuando ya están
iniciados y Usted pretenda volver a iniciarlos: en ese caso use
restart
, vea más adelante.
Detiene el servicio nombrado. Por favor note que se desconectará de manera automática a todos los usuarios conectados a este servicio cuando Usted lo detenga.
Detiene y luego inicia el servicio nombrado. Es el equivalente a ejecutar service nombre_servicio stop && service nombre_servicio start. Por favor, note que todos los usuarios conectados a este servicio se desconectarán de manera automática cuando Usted reinicia el servicio.
Los servicios diferentes soportan
acciones (las anteriores están soportadas por todos los
servicios). Por ejemplo reload
para volver a
cargar el archivo de configuración del servicio sin
reiniciarlo; force-stop
para forzar la
detención del servicio; status
para ser
informado del estado del servicio; etc. Ejecute
service nombre_servicio para que se le
informe todas las acciones que soporta el servicio
nombrado.
[32] Los niveles de ejecución “soportados” significa que, por ejemplo, los servicios de red no se añadirán al nivel de ejecución 2, que no tiene soporte para redes.