Saltar al contenido

¿Cómo puedo hacer que un script en /etc/init.d comience en el arranque?

Tenemos el resultado a esta preocupación, o por lo menos eso esperamos. Si presentas alguna duda coméntalo, que con placer te ayudaremos

Solución:

Si está en un sistema basado en Red Hat, como mencionó, puede hacer lo siguiente:

  1. Cree un guión y colóquelo en /etc/init.d (p.ej /etc/init.d/myscript). El script debe tener el siguiente formato:
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() 
    # code to start app comes here 
    # example: daemon program_name &


stop() 
    # code to stop app comes here 
    # example: killproc program_name


case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 start"
esac

exit 0 

El formato es bastante estándar y puede ver los guiones existentes en /etc/init.d. A continuación, puede utilizar el script como tal /etc/init.d/myscript start o chkconfig myscript start. El ckconfig La página del manual explica el encabezado del script:

 > This says that the script should be started in levels 2,  3,  4, and
 > 5, that its start priority should be 20, and that its stop priority
 > should be 80.

El ejemplo de código de inicio, parada y estado utiliza funciones auxiliares definidas en /etc/init.d/functions

  1. Habilitar el guión

    $ chkconfig --add myscript 
    $ chkconfig --level 2345 myscript on 
    
  2. Verifique que la secuencia de comandos esté realmente habilitada; debería ver “activado” para los niveles que seleccionó.

    $ chkconfig --list | grep myscript
    

Usted prueba, en qué nivel de ejecución normalmente comienza su máquina.

runlevel

A menudo, esto es 5 o 2: hay varias convenciones, pero nada realmente establecido, afaik. Ubuntu usa 2, mientras que la distribución anterior que usé siempre usé

  • 1 usuario único (superusuario)
  • 2 multiusuario
  • 3 multiusuario + red
  • 4 no utilizados/definibles por el usuario
  • 5 multiusuario, red + X11

Luego haces un enlace simbólico desde tu guión de inicio, tal vez /etc/init.d/foobar a /etc/rc2.d/SXYfoobar

S significa ‘Iniciar este script en este nivel de ejecución (aquí: 2). XY es un número decimal de dos dígitos, que es relevante para la secuencia, se inician los scripts.

Si depende de que el script S45barfoo se ejecute antes que usted, y S55foofoo depende de su script, elegiría xy entre 45 y 55. Para números iguales, el orden de inicio no está definido.

Mientras tanto, Ubuntu cambió (está cambiando) a otro procedimiento de inicio, llamado upstart.

Y nota: no siempre los enlaces enlazan con /etc/rcX.d – a veces lo es /etc/init/rcX.d o algo similar, pero debería ser fácil de encontrar, en algún lugar debajo de /etc.

Si desea comenzar algo al final de los scripts de inicio, /etc/rc.local sería un archivo para buscar, pero si depende de que X11 ya se esté ejecutando, puede buscar una opción de inicio automático de su entorno de escritorio, o /etc/X11/Xsession.d/ con un patrón similar al descrito anteriormente.

Si depende de que la red esté activa, hay un directorio separado (if-up.d), y para dispositivos montados como unidades USB externas /etc/udev/rules.d/.

Como Naftuli Tzvi Kay preguntó sobre Debian arriba: A partir de Debian 6, su secuencia de comandos debe contener un encabezado LSB (Linux Standards Base) que indica sus dependencias y capacidades (consulte la página wiki de Debian).

Si hay un encabezado LSB presente, puede usar insserv para incluir su script en el proceso de arranque (vea otra página wiki de Debian).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *