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.