Come posso far funzionare "rc.local" all'avvio?

62

Ho uno script che vorrei eseguire all'avvio del mio sistema. L'ho messo su "rc.local", ma non funziona. Come posso abilitare l'esecuzione all'avvio?

    
posta pedroo 28.10.2010 - 01:35

4 risposte

42

Puoi eseguire lo script manualmente? In caso contrario, è un problema con quello script; altrimenti guarda di più su rc.local. (Se lo script deve essere eseguito come root, è necessario utilizzare sudo per eseguirlo manualmente.)

Assicurati che /etc/rc.local sia eseguibile e che lo script che chiama sia anch'esso eseguibile.

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

Assicurati che rc.local abbia una linea shebang (che è l'impostazione predefinita):

$ head -n1 /etc/rc.local
#!/bin/sh -e
    
risposta data Roger Pate 28.10.2010 - 03:15
47

Nel mio caso nessuna delle istruzioni era una soluzione perfetta. Se sei stato sfortunato come me, prova questo dettagliato

  1. Inserisci tutto il codice di esecuzione in un file di testo separato con un nome arbitrario come foo.sh e salvarlo in un posto arbitrario.
  2. Aggiungi

    #!/bin/sh
    

    come prima riga del tuo codice.

  3. Prova ad eseguire il tuo foo.sh con

    sudo foo.sh
    

    per verificare che non vi siano errori.

  4. Fornisci lo script /etc/rc.local con il percorso completo e il nome dello script creato dopo il comando sh

    sh '/path/to/your/script/foo.sh'
    
  5. Ricorda di mettere la riga sopra prima dell'ultima riga di codice

    exit 0
    

    alla fine dello script /etc/rc.local.

  6. Controlla la prima riga di /etc/rc.local per essere

    #!/bin/sh -e
    
  7. Rendi il tuo /etc/rc.local eseguibile nel caso in cui non sia già eseguibile da

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  8. Controlla che tutto funzioni correttamente eseguendo

    sudo /etc/init.d/rc.local start
    
  9. Prova riavvia il sistema.
risposta data shvahabi 06.01.2014 - 18:36
18

Nelle versioni più recenti di Ubuntu viene utilizzato systemd e /etc/rc.local non viene caricato sempre per impostazione predefinita.

Verifica se il servizio di compatibilità è caricato con

systemctl status rc-local.service

Se contiene attivo (chiuso) le tue impostazioni sembrano corrette e potresti avere un altro errore nel tuo file /etc/rc.local (potrebbe trattarsi di un comando che non riesce, ad esempio).

    
risposta data rubo77 21.04.2016 - 10:06
3

2 suggerimenti.

  1. Verifica che il file di script di destinazione sia contrassegnato come eseguibile.
  2. Lo script di destinazione esegue un comando sudo ? Se è così, potresti voler fornire la password sudo ad esso.

Il mio male. Basta controllare uno allora. Grazie per la correzione enzotib:)

    
risposta data Ankit 29.06.2011 - 23:12

Leggi altre domande sui tag