Dove sono gli script di avvio per Unity Desktop?


11

Voglio eseguire uno script non appena l'autenticazione lightdm ha esito positivo e l'unità Unity inizia a caricarsi. e voglio eseguire i miei script come utente root.

dove si trovano gli script di avvio in Unity?


Voglio eseguire lo script dopo aver caricato la mia X.
Shnd,


@Shnd X in realtà inizia prima di lightdm, perché lightdm viene eseguito anche in X. Quindi, se si desidera eseguire qualcosa come utente, probabilmente lo si desidera "dopo che l'autenticazione di lightdm è riuscita" o in altre parole "all'avvio del desktop". È anche possibile eseguire uno script quando il tuo computer è appena avviato, indipendentemente dal fatto che tu abbia un utente connesso o meno (questo è ciò che avvia X per esempio) di quello che è una domanda completamente diversa. Se vuoi eseguire qualcosa come utente, probabilmente lo desideri e la risposta dipende dal tuo sistema init.
erikbwork,

Risposte:


5

Prima inserisci il tuo script /usr/bine dai il permesso di esecuzione.

Ora crea il file .desktop in /home/[user-name]/.config/autostart/cui esegui il tuo script che viene eseguito all'avvio.

Esempio: - Lascia che il tuo nome file di script sia "esempio" o "esempio.sh"

Crea il file .desktop con gedit con le seguenti righe e salva come nomefile.desktop in /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

Qui Exec=sudo exampleo Exec=sudo example.shesegue lo script come root da /usr/bin Concedi l'esecuzione del file .desktop.

Ora, Script viene eseguito all'avvio.


1
per eseguire sudo senza password, vedere askubuntu.com/questions/39281/…
Pandya

Grazie che funziona. Ma con upstart puoi rendere la stessa cosa forse un po 'più semplice (guarda la mia risposta).
TuKsn,

Ciò sarebbe perfetto con un collegamento allo spec
erikbwork del

Non credo che il file .desktop debba essere contrassegnato come eseguibile.
Julian

4

Un'altra possibilità:

Crea un file in $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

Ulteriori dettagli su Upstart :

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

Informazioni da eseguire sudosenza password:

Come eseguire un'applicazione usando sudo senza password?

Come posso eseguire specifici comandi sudo senza password?


"$ HOME / .config / upstart" nessuna di queste directory sulla mia macchina.
Kalamalka Kid,

1
@KalamalkaKid Quale versione di Ubuntu usi? La directory upstart dovrebbe trovarsi in questa posizione /home/yourusername/.config/upstart/. Apri il tuo home director in nautilus, premi Ctrl + H e dovresti vedere la directory .config
TuKsn

2

Per eseguire un comando come root , dopo il login, c'è un altro semplice trucco:

Bastano due passaggi:

  • crea un file trigger all'accesso
  • creare un cronjob, eseguito da root (impostato in /etc/crontab), per eseguire un piccolo script (eseguendo il comando) se e solo se esiste il file trigger. Poiché il file trigger viene rimosso dallo stesso script, il comando viene eseguito una sola volta.

La sequenza quindi è:

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

Il set up

I due piccoli script:

Uno per creare il file trigger all'accesso:

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

e uno due esegue il 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
  • copia entrambi gli script in due file vuoti, salvali come create_trigger.she run_command.sh.
  • Per motivi di praticità, rendili entrambi eseguibili.
  • Aggiungi il seguente comando alle applicazioni di avvio (Dash> Applicazioni di avvio> Aggiungi)

    /path/to/create_trigger.sh
    
  • Aggiungi la seguente riga al /etc/crontabfile ( sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

Ora il comando definito viene eseguito una sola volta entro un minuto dall'accesso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.