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

62

J'ai un script que je voudrais exécuter au démarrage de mon système. Je l'ai mis sur "rc.local", mais ça ne marche pas. Comment puis-je l'activer pour démarrer au démarrage?

    
posée pedroo 28.10.2010 - 01:35
la source

4 réponses

42

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 l'exécuter manuellement.)

Assurez-vous que /etc/rc.local est exécutable et que le script appelé 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
    
réponse donnée Roger Pate 28.10.2010 - 03:15
la source
47

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

  1. Mettez tout votre code d’exécution dans un fichier texte séparé avec un nom arbitraire tel que foo.sh et enregistrez-le à un endroit arbitraire.
  2. Ajouter

    #!/bin/sh
    

    comme première ligne de votre code.

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

    sudo foo.sh
    

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

  4. Fournissez votre script /etc/rc.local avec 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 exécutable /etc/rc.local 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 correctement en exécutant

    sudo /etc/init.d/rc.local start
    
  9. Testez le redémarrage de votre système.
réponse donnée shvahabi 06.01.2014 - 18:36
la source
18

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

S'il contient actif (quitté) , votre paramètre semble correct et vous pourriez avoir une autre erreur dans votre fichier /etc/rc.local (cela pourrait être une commande qui échoue par exemple).

    
réponse donnée rubo77 21.04.2016 - 10:06
la source
3

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 oui, vous pouvez lui fournir le mot de passe sudo.

Mon mauvais. Il suffit de cocher une case. Merci pour la correction enzotib:)

    
réponse donnée Ankit 29.06.2011 - 23:12
la source

Lire d'autres questions sur les étiquettes