Conozca Linux: el directorio /etc/init.d

Si usa Linux, lo más probable es que haya oído hablar del directorio init.d. Pero, ¿qué hace exactamente este directorio? En última instancia, hace una cosa, pero lo hace para todo el sistema, por lo que init.d es muy importante. El directorio init.d contiene una serie de scripts de inicio / detención para varios servicios en su sistema. Todo, desde acpid hasta x11-common, se controla desde este directorio. Por supuesto, no es exactamente así de simple.

Si observa el directorio / etc, encontrará directorios con el formato rc # .d (donde # es un número refleja un nivel de inicialización específico, de 0 a 6). Dentro de cada uno de estos directorios hay otros scripts que controlan los procesos. Estas secuencias de comandos comenzarán con una "K" o una "S". Todos los guiones "K" se ejecutan antes que los guiones "S". Y dependiendo de dónde se encuentren los scripts determinará cuándo se inician los scripts. Entre los directorios, los servicios del sistema funcionan juntos como una máquina bien engrasada. Pero hay momentos en los que necesita iniciar o detener un proceso limpiamente y sin usar los comandos kill o killall. Ahí es donde el directorio /etc/init.d es útil.

Ahora, si está utilizando una distribución como Fedora, puede encontrar este directorio en /etc/rc.d/init.d . Independientemente de la ubicación, tiene el mismo propósito.

Para controlar cualquiera de los scripts en init.d manualmente, debe tener acceso de root (o sudo). Cada script se ejecutará como un comando y la estructura del comando se verá así:

/etc/init.d/command OPTION

Donde comando es el comando real para ejecutar y OPTION puede ser uno de los siguientes:

  • comienzo
  • detener
  • recargar
  • reiniciar
  • fuerza de recarga

La mayoría de las veces usará iniciar, detener o reiniciar. Entonces, si desea detener su red, puede emitir el comando:

/etc/init.d/networking stop

O si realiza un cambio en su red y necesita reiniciarlo, puede hacerlo con el siguiente comando:

/etc/init.d/networking restart

Algunos de los scripts de inicio más comunes en este directorio son:

  • redes
  • samba
  • apache2
  • ftpd
  • sshd
  • palomar
  • mysql

Por supuesto, puede haber más scripts de uso frecuente en su directorio; depende de lo que haya instalado. La lista anterior se tomó de una instalación de Ubuntu Server 8.10, por lo que una instalación de escritorio estándar tendría unos pocos scripts de tipo red.

¿Pero qué hay de /etc/rc.local

Hay una tercera opción que solía usar bastante. Esta opción es el script /etc/rc.local . Este archivo se ejecuta después de que se hayan ejecutado todos los demás scripts de nivel de inicio, por lo que es seguro colocar varios comandos que desea que se emitan al inicio. Muchas veces colocaré instrucciones de montaje para cosas como nfs en este script. Este también es un buen lugar para colocar scripts de "solución de problemas". Por ejemplo, una vez que tuve una máquina que, por alguna razón, samba parecía no querer comenzar. Incluso después de verificar para asegurarse de que el demonio Samba estaba configurado para inicializarse en el arranque. Entonces, en lugar de pasar todo mi tiempo por adelantado con esto, simplemente coloqué la línea:

/etc/init.d/samba start

en el script /etc/rc.local y Samba funcionó de maravilla. Eventualmente regresaría y solucionaría este problema.

Pensamientos finales

Linux es flexible. Linux es tan flexible que hay, inevitablemente, numerosas formas de resolver un solo problema. Iniciar un servicio del sistema es uno de esos problemas. Con la ayuda del sistema /etc/init.d (así como /etc/rc.local ) puede estar seguro de que su servicio comenzará.