Script para arranque automático en inicio del sistema Linux (init.d)

En caso de querer ejecutar un script/programa/servicio al arranque del sistema (Linux), hemos de crear un pequeño script dentro de la carpeta /etc/init.d/ en el cual se especifican los comandos de arranque y parada del mismo.
Normalmente al instalar cualquier cosa desde gestores de paquetes como yum o apt, se crea automáticamente el script en init.d que realiza esta tarea (httpd, exim, mysql, etc) pero si queremos hacerlo con un programa o script propio tendremos que crearlo a mano.

Es muy sencillo, a continuación tenéis un ejemplo de este script, en el cual especificamos el comando a ejecutar cuando se le pasa el parametro start o stop, simplemente hay que añadir el comando correspondiente para arrancar el servicio o pararlo.


#! /bin/sh
# Script ejemplo para arranque de servicios en /etc/init.d/
#

case "$1" in
start)
echo "Iniciando servicio... "
# Aquí comando a ejecutar para arrancar el servicio
;;
stop)
echo "Deteniendo servicio..."
# Aquí comando a ejecutar para detener el servicio
;;
*)
echo "Modo de empleo: /etc/init.d/mi_script {start|stop}"
exit 1
;;
esac
exit 0

Posteriormente, hemos de crear un enlace simbólico en el runlevel correspondiente para que se ejecute cada vez que arranquemos la máquina. En otro artículo ya explique el tema de runlevels y añadir servicios al inicio del sistema en RHEL y CentOS , podéis revisarlo. No obstante si quisieramos ejecutar dicho script en cada arranque crearíamos el enlace simbólico así:

ln -s  /etc/init.d/mi_script /etc/rc3.d/S98miscript

Lo que hacemos es crear un enlace simbólico cuya primera letra es la S (de Start, K sería de kill) y el nº98 (define el momento en el que se va a ejecutar, a menor número, antes se ejecuta). Veréis que el enlace simbólico lo creo en el runlevel 3 (Multiusuario con soporte de red), que es en el que arranca esta máquina en concreto. En el fichero /etc/inittab podéis averiguar el vuestro:

# cat /etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Y esto es todo, de este modo cada vez que arranquéis la máquina debería ejecutarse el script configurado.

17 comentarios en “Script para arranque automático en inicio del sistema Linux (init.d)

  1. Saludos!!
    Tengo un pequeño problema, no le ha pasado que el script solo se ejecuta cuando reinicio la computadora?. Cuando lo enciendo no sirve, tengo que reiniciarlo para que se ejecute.

  2. Hola,
    mi servidor es centos 5, y quiero que cuando se inicia (arranca) se ejecute un programa (el navegador web por ejemplo) o cualquier otro que aya instalado.
    Como lo hago

    Gracias

  3. Hola, oye y funcionará con inicio automático como root?

    Mira necesito que cuando encienda el equipo arranque en runlevel 3 y de ahí de log in automático como root y muestre mi Script, alguna idea de que debo modificar?, he intentado con el archivo /etc/inittab, pero no lo hace:

    1:2345:respawn:/sbin/mingetty –autologin root tty1

    y de ahí sería que se mostrara el Script, ya que es interactivo.

    Espero me puedas ayudar.

    Gracias.

    • Prueba a darle permisos de ejecucion.

      sudo chmod 777 sudo chmod 777 /etc/init.d/nombredetuscript.sh

      • Buenos tutos gran blog.
        Creo que es mejor en vez de:
        sudo chmod 777 /etc/init.d/nombredetuscript.sh
        Con esto basta.
        sudo chmod +x /etc/init.d/nombredetuscript.sh

        Tu blog es famoso, y aunque este post es algo antiguo creo que siempre hay gente que esto le sirve, que mejor que hacer ajustes si es que son necesarios.
        Saludos.

        • Gracias por el comentario David. No revisé ese comentario y no me di cuenta que habían puesto lo de 777 (no fui yo jeje). Gracias por el aviso .

          Saludos!

Comments are closed.