Teléfono y Whatsapp: 675 18 68 80

Ejecutar un script al iniciar sesión en Ubuntu

Hoy traigo un pequeño consejo que permite ejecutar un script situado en cualquier parte del equipo al iniciar sesión en nuestro sistema.

Suponemos que tenemos un script bash cualquiera en nuestra carpeta personal: script.sh
Le damos permisos de ejecución.

sudo chmod +x script.sh

rc.local

La forma más fácil y sencilla es editar el fichero rc.local y añadir la instrucción sh, es decir, la encargada de ejecutarlo después de los comentarios, pero antes del ‘exit 0′.

sudo nano /etc/rc.local

quedará de la siguiente forma:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sh /home/usuario/script.sh
exit 0

Nótese que hemos añadido el comando sh para indicar que queremos ejecutarlo. Para desinstalarlo, basta con comentar la línea añadida o bien eliminarla.
Nota: hay veces que hay que poner un sleep 100 antes de llamar a la ejecución de un script porque rc.local se suele iniciar antes que otros servicios y así evitamos que no estén iniciados. También es posible que haya que eliminar el parámetro “-e” de !/bin/sh para que no pare la ejecución del script al encontrar posibles errores.

init.d

La otra opción, es ejecutarlo junto con el resto de servicios del sistema, para ello movemos el script a la carpeta init.d, le damos permisos de ejecución y actualizamos el rc.d con configuración por defecto:

sudo mv /home/usuario/script.sh /etc/init.d/
sudo chmod +x /etc/init.d/script.sh 
sudo update-rc.d script.sh defaults

Si lo queremos desinstalar, ejecutamos:

sudo update-rc.d -f script.sh remove

y después eliminamos manualmente el script de init.d si no lo vamos a utilizar más:

sudo rm /etc/init.d/script.sh

  • Pingback: [lubuntu] how to run a script on startup in lubuntu | James n Sheri.comJames n Sheri.com()

  • Juan P

    Muy buena respuesta me fue de mucha utilidad para un script Que me escriba en la configuración del archivo /etc/resolv.conf un DNS 127.0.0.1 ya que al tener modo NAT mi MVirtual esta se borraba.

  • yoli

    muy bueno

  • Andrés

    Creo que el titulo puede llegar a engañar ya que no se ejecuta cuando se inicia sesión, sino cuando se inicia el sistema.