¿Dónde están los scripts de inicio para Unity Desktop?

11

Quiero ejecutar un script tan pronto como mi autenticación lightdm sea exitosa y mi Unidad comience a cargarse. y quiero ejecutar mis scripts como usuario root.

¿Dónde se encuentran los scripts de inicio en Unity?

Shnd
fuente
Quiero ejecutar el script después de cargar mi X.
Shnd
@Shnd X en realidad comienza antes de lightdm, porque lightdm también se ejecuta en X. Por lo tanto, si desea ejecutar algo como su usuario, probablemente lo desee "después de que la autenticación de lightdm haya tenido éxito" o, en otras palabras, "cuando se inicia el escritorio". También es posible ejecutar un script cuando su computadora solo inicia, no importa si tiene un usuario conectado o no (eso es lo que inicia X, por ejemplo) que esa es una pregunta completamente diferente. Si desea ejecutar algo como usuario, probablemente lo desee y la respuesta depende de su sistema de inicio.
erikbwork

Respuestas:

5

Primero coloque su script /usr/biny otorgue permiso de ejecución.

Ahora cree un archivo .desktop en el /home/[user-name]/.config/autostart/que ejecute su script que se ejecuta al inicio.

Ejemplo: - Deje que su nombre de archivo del script sea "ejemplo" o "ejemplo.sh"

Cree un 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 exampleo Exec=sudo example.shejecuta su script como una raíz desde /usr/bin Dar permiso de ejecución al archivo .desktop.

Ahora, Script se ejecuta al inicio.

Pandya
fuente
1
para ejecutar sudo sin contraseña, consulte askubuntu.com/questions/39281/…
Pandya
Gracias eso funciona. Pero con el advenedizo puedes hacer lo mismo quizás un poco más simple (mira mi respuesta).
TuKsn
Esto sería perfecto con un enlace a la especificación
erikbwork
No creo que el archivo .desktop deba marcarse como ejecutable.
Julian
4

Otra posibilidad:

Crea 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/

Información para ejecutar sudosin contraseña:

¿Cómo ejecutar una aplicación usando sudo sin contraseña?

¿Cómo ejecuto comandos sudo específicos sin contraseña?

TuKsn
fuente
"$ HOME / .config / upstart" no existe tal directorio en mi máquina.
Kalamalka Kid
1
@KalamalkaKid ¿Qué versión de Ubuntu utilizas? El directorio inicial debe estar en esta ubicación /home/yourusername/.config/upstart/. Abra el director de su casa en nautilus, presione Ctrl + H y debería ver el directorio .config
TuKsn
2

Para ejecutar un comando como root , después de iniciar sesión, hay otro truco simple:

Toma dos pasos:

  • crear un archivo desencadenante al iniciar sesión
  • cree un cronjob, ejecutado por root (configurado /etc/crontab), para ejecutar un pequeño script (ejecutando su comando) si y solo si el archivo desencadenante existe. Dado que el mismo archivo elimina el archivo desencadenante, 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 desencadenante al iniciar sesión:

#!/bin/sh
touch $HOME/.trigger

y uno dos ejecuta 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
   <your command here, run by root>
   rm -f $FILE
fi
  • copie ambos scripts en dos archivos vacíos, guárdelos como create_trigger.shy run_command.sh.
  • Por razones de conveniencia, haga que ambos sean ejecutables.
  • Agregue el siguiente comando a sus Aplicaciones de inicio (Tablero> Aplicaciones de inicio> Agregar)

    /path/to/create_trigger.sh
    
  • Agregue la siguiente línea al /etc/crontabarchivo ( 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.

Jacob Vlijm
fuente