web-dev-qa-db-fra.com

Comment puis-je exécuter "rc.local" au démarrage?

J'ai un script que j'aimerais exécuter lorsque mon système démarre. Je l'ai mis sur "rc.local", mais cela ne fonctionne pas. Comment puis-je l'activer au démarrage?

72
pedroo

Pouvez-vous exécuter votre script manuellement? Sinon, c'est un problème avec ce script; sinon regardez plutôt rc.local. (Si ce script doit être exécuté en tant que root, vous devez utiliser Sudo pour le lancer manuellement.)

Assurez-vous que /etc/rc.local est exécutable et que le script qu’il appelle est également exécutable.

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

Assurez-vous que rc.local a une ligne Shebang (qui est la valeur par défaut):

$ head -n1 /etc/rc.local
#!/bin/sh -e
52
Roger Pate

Dans mon cas, aucune des instructions n’était une solution parfaite. Si vous étiez aussi malchanceux que moi, essayez celui-ci détaillé

  1. Placez tout votre code d'exécution dans un fichier texte séparé portant un nom quelconque, tel que foo.sh, et enregistrez-le à un endroit quelconque.
  2. Ajouter

    #!/bin/sh
    

    comme première ligne de votre code.

  3. Essayez d’exécuter votre foo.sh en

    Sudo foo.sh
    

    pour vérifier il n'y a pas d'erreur du tout.

  4. Indiquez à votre script /etc/rc.local le chemin complet et le nom de votre script créé après la commande sh

    sh '/path/to/your/script/foo.sh'
    
  5. N'oubliez pas de mettre la ligne ci-dessus avant la dernière ligne de code

    exit 0
    

    à la fin du script /etc/rc.local.

  6. Vérifiez la première ligne de /etc/rc.local pour être

    #!/bin/sh -e
    
  7. Rendez votre /etc/rc.local exécutable au cas où il ne serait pas déjà exécutable par

    Sudo chown root /etc/rc.local
    Sudo chmod 755 /etc/rc.local
    
  8. Vérifiez que tout fonctionne bien en exécutant

    Sudo /etc/init.d/rc.local start
    
  9. Testez le redémarrage de votre système.
53
shvahabi

Sur les versions plus récentes d'Ubuntu systemd est utilisé et /etc/rc.local n'est pas toujours chargé par défaut.

Vérifiez si le service de compatibilité est chargé avec

systemctl status rc-local.service

screenshot

Si elle contient active (sortie) , votre réglage semble correct et vous risquez de rencontrer une autre erreur dans votre fichier /etc/rc.local (par exemple, une commande qui échoue). .

27
rubo77

2 suggestions.

  1. Assurez-vous que le fichier de script cible est également marqué comme exécutable.
  2. Le script cible exécute-t-il une commande Sudo? Si tel est le cas, vous pouvez lui fournir le mot de passe Sudo.

Ma faute. Il suffit de vérifier un alors. Merci pour la correction enzotib :)

3
Ankit