01 agosto, 2017

Ejecutar scripts o aplicaciones al inicio del sistema

Esta es una entrada muy básica, pero que decidí escribirla para hacer referencia a ella en futuras entradas con el fin de evitar repiticiones de estas acciones en las mismas.

Tanto en sistemas Windows como Linux se pueden automatizar scripts o aplicaciones para que se inicien en el arranque del sistema o en el inicio de sesión de usuario.

Comentaré varias opciones para realizar este proceso, tanto en sistemas MS Windows como en distribuciones Linux.

En Windows 

Se pueden añadir ficheros binarios o scripts en el inicio del sistema o inicio de sesión de usuario de diferentes maneras.
  1. Creando un valor de cadena y estableciendo la ruta del script batch en la clave de registro: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run.
  2. Ubicando el script o binario ejecutable del software en la carpeta para la ejecución de inicio del sistema: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp.
  3. Mediante una directiva local de Windows (GPO): https://technet.microsoft.com/es-es/library/cc770556(v=ws.11).aspx.
  4. Con una tarea programada de Windows (taskschd.msc), estableciendo como desencadenador el "Inicio del sistema" o "Inicio de sesión" y en acciones introducir el path de ubicación del script .bat. https://technet.microsoft.com/es-es/library/cc748841(v=ws.11).aspx

En Linux 

Al igual que Windows, hay varias formas de hacer que un script o aplicación se ejecute en el inicio del sistema. Una de ellas es haciendo uso del fichero /etc/rc.local. Este fichero se ejecuta en el inicio de sesión del usuario. Se ejecuta en el último nivel una vez iniciado el sistema.

Establecemos permisos de ejecución al fichero o programa
sudo chmod +x [script.sh_o_aplicacion]
Añadimos el path de ubicación del fichero como una línea al final del fichero /etc/rc.local. De este modo se ejecutará automáticamente en los próximos inicios de sesión. Esto lo haremos desde un superusuario (root) que tiene permisos de escritura sobre el fichero /etc/rc.local.

También se podría hacer de forma manual editando el propio fichero /etc/rc.local.
sudo su
echo [path_script.sh_o_aplicacion] >> /etc/rc.local
Otra opción sería establecer el script.sh o el programa como un servicio del sistema a través del directorio /etc/init.d/. De este modo se iniciará según el sistema se inicie, como si fuese un servicio más.
Movemos el script.sh o programa al directorio /etc/init.d/. Establecemos permisos de ejecución sobre el fichero y actualizamos el update-rc.d.
sudo mv [path_script.sh_o_aplicacion] /etc/init.d/
sudo chmod +x /etc/init.d/[script.sh_o_aplicacion]
sudo update-rc.d [script.sh_o_aplicacion] defaults
Si estamos trabajando con un script .sh y al ejecutar el último comando de actualización de update-rc.d nos diese algún/os error/es del tipo "insserv: missing ...".
Tendríamos que referenciar en modo de comentarios los siguientes parámetros en el propio fichero del script.
#!/bin/bash
### BEGIN INIT INFO
# Provides:           descripción
# Required-Start:     $syslog
# Required-Stop:      $syslog
# Default-Start:      2 3 4 5
# Default-Stop:       0 1 6
# Short-Description:  descripción
# Description:        descripción
### END INIT INFO
[SCRIPT AQUÍ]
Saludos!

No hay comentarios:

Publicar un comentario

Entradas Relacionadas