Esegui automaticamente il programma all'avvio in Ubuntu Linux [chiuso]


140

Avrei bisogno di un programma da eseguire ogni volta che avvio Ubuntu Linux. Quindi dovrei aggiungerlo all'elenco dei miei programmi di avvio. Solo un problema: avrei dovuto farlo tramite il terminale.



23
@Flexo Questa risposta non è presente in nessuno dei link forniti. +1 a questa domanda e risposta
Francisco Valdez,

2
In effetti, la risposta qui è referenziata dalla prima di quelle domande.
Wilson F,

4
Per un modo semplice e portatile per farlo, puoi usare Cron. Esegui crontab -eper modificare il crontab dell'utente; aggiungi @reboot commandper eseguire commandad ogni avvio.
appas

2
Non so se è un duplicato o no, ma è il primo hit di Google ..
Vladimir verleg,

Risposte:


178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Lo script ora dovrebbe avviarsi all'avvio. Si noti che questo metodo funziona anche con collegamenti sia simbolici sia simbolici ( ln).

modificare

A questo punto nel processo di avvio PATH non è ancora impostato, quindi è fondamentale che vengano utilizzati percorsi assoluti. MA, come sottolineato nei commenti di Steve HHH, dichiarare esplicitamente il percorso completo del file ( /etc/init.d/filename) per il comando update-rc.d non è valido nella maggior parte delle versioni di Linux. Per la manpage di update-rc.d , il secondo parametro è uno script in /etc/init.d/*. Codice sopra aggiornato per riflettere questo.

Un'altra modifica

Inoltre, come sottolineato nei commenti (di Charles Brandt), /filenamedeve essere una sceneggiatura in stile init. È stato fornito anche un buon modello: https://github.com/fhd/init-script-template .

Un altro link ad un altro articolo solo per evitare il possibile marciume del link (anche se sarebbe triste se GitHub morisse) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

ancora Un'altra modifica

Come sottolineato nei commenti (di Russell Yan), funziona solo con la modalità predefinita di update-rc.d.

Secondo il manuale di update-rc.d, può essere eseguito su due modalità, "le macchine che usano la modalità legacy avranno un file /etc/init.d/.legacy-bootordering", nel qual caso è necessario passare la configurazione di sequenza e runlevel tramite argomenti della riga di comando.

L'argomento equivalente impostato per l'esempio sopra è

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .


1
Proprio come una FYI, l'opzione "default" mette un link per avviare lo script nei livelli di esecuzione 2, 3, 4 e 5. (e mette un link per fermarsi tra 0, 1 e 6.)
Dave Lasley,

5
Ho appena provato questo in Ubuntu Server 12.04 LTS, ma in 12.04 non puoi avere il prefisso /etc/init.d. E 'solo sudo update-rc.d filename defaults.
Steve HHH,

1
@puk Sia i collegamenti sia i collegamenti simbolici funzioneranno con questo metodo
Dave Lasley,

14
Volevo solo aggiungere che / nomefile in questo caso dovrebbe essere uno script in stile init. Ecco un modello per iniziare il tuo script di init personalizzato: github.com/fhd/init-script-template
Charles Brandt

1
Leggere questo - unix.stackexchange.com/questions/28679/… - insieme alla risposta sarà utile
Arjun Sreedharan,
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.