Quiero ejecutar un script tan pronto como mi autenticación con lightdm tenga éxito, y mi Unity comienza a cargarse. y quiero ejecutar mis scripts como usuario root.
¿Dónde están los scripts de inicio ubicados en Unity?
Primero ponga su script en /usr/bin
y dé permiso de ejecución.
Ahora cree el archivo .desktop en /home/[user-name]/.config/autostart/
que ejecuta el script que se ejecuta al inicio.
Ejemplo: – Deje que su nombre de archivo de script sea “example” o “example.sh”
Cree el archivo .desktop con gedit con las siguientes líneas y guárdelo como filename.desktop en /home/[user-name]/.config/autostart/
[Desktop Entry] Type=Application Exec=sudo example Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=myscript Comment=Startup Script
Aquí Exec=sudo example
o Exec=sudo example.sh
ejecuta su script como una raíz desde /usr/bin
Otorgue permiso de ejecución al archivo .desktop.
Ahora, Script se ejecuta en el inicio.
Otra posibilidad:
Cree un archivo en $HOME/.config/upstart/my-upstart-script.conf
start on desktop-start stop on desktop-end script sudo fdisk -l > /home/[user-name]/upstart-test.txt end script
Más detalles para Upstart :
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
http://upstart.ubuntu.com/cookbook/
Infos para ejecutar sudo
sin contraseña:
¿Cómo ejecutar una aplicación usando sudo sin contraseña?
¿Cómo ejecuto comandos sudo específicos sin una contraseña?
Para ejecutar un comando como root , después de iniciar sesión, hay otro truco simple:
Lleva dos pasos:
/etc/crontab
), para ejecutar un pequeño script (ejecutando su comando) si y solo si el archivo desencadenante existe. Dado que el mismo script elimina el archivo de activación, su comando solo se ejecuta una vez. La secuencia entonces es:
USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore
La puesta en marcha
Los dos pequeños guiones:
Uno para crear el archivo de activación al iniciar sesión:
#!/bin/sh touch $HOME/.trigger
y uno dos ejecutan el comando:
#!/bin/bash FILE="/path/to/your/homedirectory/.trigger" # don't use $HOME here, since you run it by root if [ -f $FILE ]; then rm -f $FILE fi
create_trigger.sh
y run_command.sh
. Agregue el siguiente comando a sus aplicaciones de inicio (Dash> Aplicaciones de inicio> Agregar)
/path/to/create_trigger.sh
Agregue la siguiente línea al /etc/crontab
( sudo nano /etc/crontab
):
* * * * * root /path/to/run_command.sh
Ahora el comando definido se ejecuta una sola vez dentro de un minuto desde el inicio de sesión.