Come faccio a eseguire uno script all'avvio? [duplicare]

92

Ho uno script in una cartella:

/path/to/my/script.sh

Ho bisogno che questo script venga eseguito ogni volta che si avvia il sistema (anche se nessuno accede al sistema). Cosa devo fare per farlo accadere?

    
posta Rusty 12.12.2012 - 15:40

5 risposte

120

Sono necessari i privilegi di root per i seguenti. Per diventare root, apri un terminale ed esegui il comando

sudo -i

e il prompt dei comandi cambierà in "#" che indica che la sessione del terminale ha i privilegi di root.

Alternativa 1: aggiungi comandi a /etc/rc.local

vi /etc/rc.local

con contenuti come i seguenti:

# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1   # Added by me
exit 0

Alternativa n. 2: aggiunta di un lavoro Upstart (per sistemi precedenti alla 15.04)

Crea /etc/init/myjob.conf

vi /etc/init/myjob.conf

con contenuti come il seguente

description     "my job"
start on startup
task
exec /path/to/my/script.sh

Alternativa n. 3: aggiungi uno script di init (obsoleto)

Crea un nuovo script in /etc/init.d/myscript .

vi /etc/init.d/myscript

(Ovviamente non deve essere chiamato "myscript".) In questo script, fai quello che vuoi. Forse esegui semplicemente lo script che hai menzionato.

#!/bin/sh
/path/to/my/script.sh

Rendilo eseguibile.

chmod ugo+x /etc/init.d/myscript

Configura il sistema init per eseguire questo script all'avvio.

update-rc.d myscript defaults
    
risposta data jdthood 12.12.2012 - 16:07
43

Non hai bisogno di root, o anche di accedere.

Puoi modificare il tuo crontab ( crontab -e ) e creare una voce come questa:

@reboot /path/to/script.sh

In questo modo, puoi eseguirlo come utente normale. @reboot significa semplicemente che viene eseguito all'avvio del computer (non necessariamente solo quando viene riavviato).

    
risposta data Dan Jones 12.12.2012 - 17:20
11

dal terminale

  1. crea il file newshell.sh.desktop nella cartella ~/.config/autostart :

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. modifica Exec , Name e Comment valore e aggiungi al file: prima riga

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. Salva

o

puoi farlo dalla GUI:

  1. esegui lo strumento "startup applications" in Ubuntu 14.04 e lo scrivi nella casella di ricerca.
  2. aggiungi stesso Exec , Name e Comment .
risposta data ChaosPredictor 16.09.2015 - 16:31
2

Nella tua casa, hai un file chiamato .bashrc. Questo file viene eseguito all'apertura della sessione.

Metti qualcosa di simile alla fine del file:

sh /path/to/your/script.sh

EDIT: scusa, non ho risposto alla tua domanda perché la mia soluzione viene eseguita quando un utente ha effettuato l'accesso ...

Per eseguire qualcosa prima del login, puoi provare rcconf o rc-file: link

    
risposta data Gp2mv3 12.12.2012 - 15:47
-1

Modifica semplicemente rc.local nano /etc/init.d/rc.local come segue:

/path/to/my/script.sh || exit 1 
exit 0
    
risposta data Arcsector 26.08.2017 - 00:43

Leggi altre domande sui tag