97 votes

Comment puis-je faire en sorte que /etc/rc.local s'exécute au démarrage ?

J'ai un script que j'aimerais exécuter au démarrage de mon système et je l'ai mis dans /etc/rc.local mais ça ne marche pas. Comment puis-je faire en sorte qu'il s'exécute au démarrage ?

76voto

Pouvez-vous exécuter votre script manuellement ; si non, 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 , sudo doit être utilisé pour l'exécuter manuellement.

  • Assurer /etc/rc.local et le script qu'il appelle, est exécutable :

    ls -l /etc/rc.local
      -rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local
  • Assurer rc.local a une ligne shebang, qui est le défaut :

    head -n1 /etc/rc.local
      #!/bin/sh -e

60voto

shvahabi Points 902

Dans mon cas, aucune des instructions n'était une solution parfaite, alors essayez celle-ci, détaillée :

  1. Sauvegarder tout le code exécuté dans un fichier texte séparé avec un nom arbitraire, tel que foo.sh

  2. Ajouter #!/bin/sh comme première ligne dans foo.sh en l'exécutant via sudo foo.sh pour vérifier les erreurs

  3. /etc/rc.local placez le chemin d'accès complet à foo.sh précédé de sh avant exit 0 :

    sh '/path/to/your/script/foo.sh'
  4. Vérifiez la première ligne dans /etc/rc.local es #!/bin/sh -e

  5. Assurer /etc/rc.local est exécutable :

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
  6. Vérifiez que tout fonctionne bien :

    sudo /etc/init.d/rc.local start
  7. Redémarrer pour tester

37voto

jrishaw Points 71

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 Compatibilité est chargé avec

systemctl status rc-local.service

screenshot

S'il contient active (sortie) votre réglage semble correct et vous pourriez avoir une autre erreur dans votre /etc/rc.local (il peut s'agir d'une commande qui échoue par exemple).

4voto

Ankit Points 71

2 suggestions.

  1. Assurez-vous que le fichier script cible est également marqué exécutable.
  2. Est-ce que le script cible exécute un sudo commande ? Si c'est le cas, vous pouvez lui fournir le mot de passe sudo.

C'est ma faute. Vérifiez-en un alors. Merci pour la correction enzotib :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X