Ejecutar un script en el arranque de Linux [Solucionado]

Dudas y comentarios relacionadas con paquetes o programas específicos (obtención, uso, actualizaciones, versiones, problemas de instalación, etc.)

Moderadores: doc, Deckon

Responder
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Ejecutar un script en el arranque de Linux [Solucionado]

Mensaje por banderas20 » Mar Jul 23, 2013 8:57 pm

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!
Última edición por banderas20 el Dom Jul 28, 2013 2:59 am, editado 1 vez en total.
Avatar de Usuario
cuentos
Forista Distinguido
Forista Distinguido
Mensajes: 1088
Registrado: Mar May 03, 2011 7:09 am

Re: Ejecutar un script en el arranque de Linux

Mensaje por cuentos » Mar Jul 23, 2013 9:48 pm

mmmmmmmm
Y en que sistema, me imagino que en debian o derivados.
http://cristianolmos.blogspot.mx/2009/0 ... ue-de.html
Cuando mi maestro me reprendió, me dijo: Alejandro Magno a los 20 años conquistaba el mundo, Yo le conteste "si pero tenia de maestro a Aristóteles".
Twitter: @mcuentos
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por banderas20 » Mar Jul 23, 2013 10:40 pm

cuentos escribió:mmmmmmmm
Y en que sistema, me imagino que en debian o derivados.
http://cristianolmos.blogspot.mx/2009/0 ... ue-de.html
Justamente es un Debian, y justamente ese link es el que estaba usando como guía. Pero, aparte de los problemas que he mencionado, me da error la siguiente orden:

Código: Seleccionar todo

#sudo update-rc.d nombrescript
Me dice que está incompleto. Le añado al final defaults y se lo come, pero me da los problemas mencionados en mi post.

Gracias!
Avatar de Usuario
cuentos
Forista Distinguido
Forista Distinguido
Mensajes: 1088
Registrado: Mar May 03, 2011 7:09 am

Re: Ejecutar un script en el arranque de Linux

Mensaje por cuentos » Mar Jul 23, 2013 10:44 pm

En debian, no viene activado sudo por defecto.
Entras a la terminal de root, y ejecutas los comandos sin sudo.
Cuando mi maestro me reprendió, me dijo: Alejandro Magno a los 20 años conquistaba el mundo, Yo le conteste "si pero tenia de maestro a Aristóteles".
Twitter: @mcuentos
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por banderas20 » Mar Jul 23, 2013 10:58 pm

cuentos escribió:En debian, no viene activado sudo por defecto.
Entras a la terminal de root, y ejecutas los comandos sin sudo.
Ya, eso ya lo he hecho, y me tira para adelante. Pero tengo los problemas que pongo en el primer post.

Gracias.
Avatar de Usuario
retranca
Forista Menor
Forista Menor
Mensajes: 73
Registrado: Lun Mar 29, 2010 4:45 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por retranca » Mar Jul 23, 2013 11:56 pm

banderas20 escribió:quiero hacerlo como servicio. Es decir, que se ejecute a cada inicio.
Un servicio es un proceso en segundo plano, que puede o no arrancar al inicio. De la misma forma, un proceso que se ejecuta al inicio no tiene que ser necesariamente un servicio.

Cuando se trata de ejecutar un script al inicio, hay varias formas (como siempre en esto de Linux, para gustos colores):

-Una es como lo estas haciendo, metiéndolo en init.d y demás, que tendría que funcionar.
-Otra, que para mi es bastante más sencilla e igual de útil en este caso, es llamar al script desde /etc/rc.local.

rc.local es un script que se ejecuta al arrancar el sistema, aunque por defecto no hace nada porque no contiene instrucciones. Podrías poner en el fichero la ruta completa al script (antes del 'exit 0'), y listo.

Por aquí hay un hilo sobre este mismo tema.

Editado -- 23 Jul 2013, 23:56 --

Edito: si se te ejecuta al apagar, probablemente sea porque tienes un enlace en /etc/rc0.d/ a tu script. Puedes borrarlo.

Saludos
Avatar de Usuario
EnriqueK
Forista Medio
Forista Medio
Mensajes: 367
Registrado: Dom Sep 16, 2007 7:00 am

Re: Ejecutar un script en el arranque de Linux

Mensaje por EnriqueK » Mié Jul 24, 2013 3:52 am

Hay otra forma, se trata de hacerlo mediante crontab
su
crontab -e
agregas
@reboot sleep 25 && bash ruta aĺ script

Si tines por ejemplo el editor gedit, te va a resultar mas cómodo poner
su
export EDITOR=gedit && crontab -e
@reboot sleep 25 && bash ruta aĺ script
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por banderas20 » Mié Jul 24, 2013 8:21 am

Retranca, ¿cuál es el hilo que comentas? ¿Qué diferencia hay entre meterlo en rc2.d y rc.local?

Saludos y gracias a todos!
Avatar de Usuario
retranca
Forista Menor
Forista Menor
Mensajes: 73
Registrado: Lun Mar 29, 2010 4:45 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por retranca » Mié Jul 24, 2013 10:07 pm

EnriqueK escribió:Hay otra forma, se trata de hacerlo mediante crontab
Como digo, para gustos colores. Y habrá más, imagino :)
banderas20 escribió:Retranca, ¿cuál es el hilo que comentas? ¿Qué diferencia hay entre meterlo en rc2.d y rc.local?

Saludos y gracias a todos!
sistema/ejecutar-script-arranque-debian-t45615.html

En cuanto a las diferencias, pues... a mi entender, los rcX.d y el init.d están pensados para los servicios, y su funcionamiento es mas complejo, distinguiendo entre runlevels y demás. En cambio, el rc.local es simplemente un script que ejecuta instrucciones u otros scripts al arrancar el equipo, y además lo hace siempre al final, cuando termina de arrancar todo lo que está en el rc2.d (o el runlevel que sea), con lo que no te tienes que preocupar por las prioridades (los numeros del 00 al 99 del nombre del archivo).

Pero funcionar te va a funcionar de todas formas, así que tú eliges.
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por banderas20 » Jue Jul 25, 2013 7:13 am

retranca escribió:
banderas20 escribió:Retranca, ¿cuál es el hilo que comentas? ¿Qué diferencia hay entre meterlo en rc2.d y rc.local?

Saludos y gracias a todos!
sistema/ejecutar-script-arranque-debian-t45615.html

En cuanto a las diferencias, pues... a mi entender, los rcX.d y el init.d están pensados para los servicios, y su funcionamiento es mas complejo, distinguiendo entre runlevels y demás. En cambio, el rc.local es simplemente un script que ejecuta instrucciones u otros scripts al arrancar el equipo, y además lo hace siempre al final, cuando termina de arrancar todo lo que está en el rc2.d (o el runlevel que sea), con lo que no te tienes que preocupar por las prioridades (los numeros del 00 al 99 del nombre del archivo).

Pero funcionar te va a funcionar de todas formas, así que tú eliges.
Cojonudo! Eso me aclara muchas cosas.

Por cierto, algo leí de que depende donde pongas el script, éste se ejecuta al arrancar y al cerrar el sistema. ¿Te suena?

Muchísimas gracias!
Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1521
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.
Contactar:

Re: Ejecutar un script en el arranque de Linux

Mensaje por maiku » Jue Jul 25, 2013 3:40 pm

banderas20 escribió:

Código: Seleccionar todo

#sudo update-rc.d nombrescript
Me dice que está incompleto. Le añado al final defaults y se lo come, pero me da los problemas mencionados en mi post.

Gracias!

Hola banderas, según tengo entendido, cuando lanzas update-rc.d nombrescript defaults se agregará en los runlevels por defecto (2,3,4,5) para inicio y se agregará el script para pararlo en los restantes runlevels. Es por eso que te aparecerá lo que hace el script al inicio y al final.

para ver la forma que mejor te convega podrías revisar esta página:

http://enavas.blogspot.com/2008/12/upda ... do-el.html
Grüße...
Maiku

Full linux alchemist!!!
Avatar de Usuario
retranca
Forista Menor
Forista Menor
Mensajes: 73
Registrado: Lun Mar 29, 2010 4:45 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por retranca » Jue Jul 25, 2013 8:16 pm

En Linux, además de los runlevels multiusuario (2,3,4,5), contamos con el runlevel 0 (apagado), 1 (single user o monousuario) y 6 (reinicio). De hecho, una forma de apagar el equipo es con el comando init 0, y para reiniciar init 6.

Para cada runlevel, como has podido comprobar, existe un directorio rc (rc0.d,rc1.d,...). Por eso, si colocas un script en rc0.d, se ejecutará al apagar, y si lo colocas en rc6.d se ejecutará al reiniciar.
banderas20
Forista Menor
Forista Menor
Mensajes: 67
Registrado: Mar Jul 09, 2013 1:20 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por banderas20 » Sab Jul 27, 2013 1:13 pm

Gracias por vuestra ayuda! Habéis sido muy claros. :wink:
Avatar de Usuario
retranca
Forista Menor
Forista Menor
Mensajes: 73
Registrado: Lun Mar 29, 2010 4:45 pm

Re: Ejecutar un script en el arranque de Linux

Mensaje por retranca » Dom Jul 28, 2013 12:44 am

No hay de que.
Ahora si consideras que tu duda ha sido aclarada, por favor edita el primer mensaje de este hilo y agrega al título [Solucionado].

Saludos
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje