Ejecutar un script en el arranque de Linux

Buenas!

He creado un pequeño script que imprime la fecha y hora en un fichero, y quiero hacerlo como servicio. Es decir, que se ejecute a cada inicio.

Según he leído por ahí, hay 2 pasos básicos que hacer:

1. Meterlo en /etc/init.d/
2. Crear un enlace simbólico a éste en /etc/rc2.d/

He estado haciendo pruebas, y haciendo el paso 1 me sucede lo siguiente:

a. Se me ejecuta (no ha hecho falta hacer el paso 2 y no sé porqué)
b. Se me ejecuta 2 veces. Aparentemente al apagar y al iniciar.

a y b me desconciertan.

¿Me puede alguier echar una mano?

Gracias!
Acabaras antes usando el /etc/rc.local
JanKusanagi escribió:Acabaras antes usando el /etc/rc.local


¿Qué he de poner ahí? ¿Un enlace al script, o el script en sí mismo?

Gracias!
para el sistema es lo mismo un enlace que el fichero en si mismo.
nu_kru escribió:para el sistema es lo mismo un enlace que el fichero en si mismo.


OK. Pero no entiendo porque en alunos sitios me indica tocar el directorio rc2.d y en otros el rc.local.
banderas20 escribió:OK. Pero no entiendo porque en alunos sitios me indica tocar el directorio rc2.d y en otros el rc.local.

Eso es porque no te molestas mucho en investigar los "tutoriales" desfasados que encuentras en internet.


Si leyeras un poco rc?.d se usa para los distintos niveles de ejecución de sys-v, y se ejecutan tanto al iniciar el sistema como al apagar el sistema. Ya que se suele colocar para ejecutar servicios.

Usas debian? Que yo sepa en versiones anteriores de debian (mmm. 3-4?) rc.local solo estaba por compatibilidad, pero el sistema de arranque lo ignoraba.

En http://debian-handbook.info/browse/stable/ tienes un bonito libro para administradores de debian, en el que está explicado perfectamente el proceso de arranque.
nu_kru escribió:
banderas20 escribió:OK. Pero no entiendo porque en alunos sitios me indica tocar el directorio rc2.d y en otros el rc.local.

Eso es porque no te molestas mucho en investigar los "tutoriales" desfasados que encuentras en internet.


Si leyeras un poco rc?.d se usa para los distintos niveles de ejecución de sys-v, y se ejecutan tanto al iniciar el sistema como al apagar el sistema. Ya que se suele colocar para ejecutar servicios.


Sí que me molesto en leerlos, pero como comprenderás, si estoy aprendiendo, no sé lo que está desfasado y lo que no. Y en Internet no hay poca información precisamente, con lo cual cuesta más.
Algo me suena haber leído sobre que se ejecutan al inicio y al cierre, pero no sé de qué depende.


nu_kru escribió:Usas debian? Que yo sepa en versiones anteriores de debian (mmm. 3-4?) rc.local solo estaba por compatibilidad, pero el sistema de arranque lo ignoraba.

En http://debian-handbook.info/browse/stable/ tienes un bonito libro para administradores de debian, en el que está explicado perfectamente el proceso de arranque.


Sí. Uso Debian. Si te he entendido bien, rc.local es lo que está desfasado. ¿Cierto?

Gracias por el enlace. Y un poco de paciencia con los que estamos aprendiendo.

Saludos!
en ningún momento he dicho que rc.local este desfasado, solo he indicado que en versiones antiguas de debian no se usaba, ahora no tengo ni idea de que usa, ni me interesa saberlo.

Por cierto el manual es de la versión 6, tal vez hayan cambiado cosas con la versión 7 así que no te lo tomes todo al pie de la letra.

Y para saber si algo está desfasado, si tiene mas de 4 años (y con menos también), duda.

Mira gtk3, cada 6 meses cambiando la api.
nu_kru escribió:en ningún momento he dicho que rc.local este desfasado, solo he indicado que en versiones antiguas de debian no se usaba, ahora no tengo ni idea de que usa, ni me interesa saberlo.

Por cierto el manual es de la versión 6, tal vez hayan cambiado cosas con la versión 7 así que no te lo tomes todo al pie de la letra.

Y para saber si algo está desfasado, si tiene mas de 4 años (y con menos también), duda.

Mira gtk3, cada 6 meses cambiando la api.


OK. En todo caso, ese enlace que has pasado es muy bueno.
Si quieres algo sencillo para arrancar scripts al inicio prueba el 'supervisor'. Lo tienes en los repos, luego te creas el .conf correspondiente con el comando que quieras ejecutar.
Para esto te recomiendo que uses crontab antes que aplicaciones externas

Si necesitas más info dime.

Saludos
CristianL escribió:Para esto te recomiendo que uses crontab antes que aplicaciones externas

Si necesitas más info dime.

Saludos


Buenas!

Pero crontab es para programar scripts a horas determinadas, ¿no? Son cosas diferentes...
Discúlpame, había leído mal el primer comentario.

Sorry
la mayoría de scripts que te vas a encontrar en init.d tendrán algo como esto:

case "$1" in
  start)
    echo "arranque "
    ;;
  stop)
    echo "Paro"
   ;;
  *)
    echo "/etc/init.d/script {start|stop}"
    exit 1
    ;;
esac

exit 0


En plan muy básico. Si quieres puedes editar algunos y ver lo que hacen.

Estos actúan como demonios, si no es que lo son :-)

Una vez que has añadido tu script (con permisos 755) basta que hagas un update-rc.d tu_script default y te genera los enlaces simbólicos por defecto (default) hazte un man update-rc.d para ver el resto de opciones.

Dentro de rc2.d que es el runlevel por defecto en debian, unavez que ya se ha cargado el sistema y en muchas otras, verás algo como S20tu_script eso quiere decir que cuando entres en ese runlevel al iniciar se ejecutará. Si vas al rc0.d (creo que es el de reinicio apagado o es el 6 hahaha no me acuerdo!) verás que seguro te pone K20....

Al final, puedes jugar de mil maneras, puedes probar a cambiar la K por la S jajaj el número que indica la prioridad, con lo que tienes mucho margen para poder ejecutar lo que tu quieras, poder interactuar con el script etcétera....

A mí personalmente me gusta sys-rc-conf para modificar que quiero ejecutar en cada runlevel. Por ejemplo, no quiero tener exim que viene por defecto:

Imagen

Un saludo.
Buena información. Muchas gracias! [oki]
14 respuestas