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?
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
Dans mon cas, aucune des instructions n’était une solution parfaite. Si vous étiez aussi malchanceux que moi, essayez cette version détaillée
Ajouter
#!/bin/sh
comme première ligne de votre code.
Essayez d’exécuter votre foo.sh par
sudo foo.sh
pour vérifier qu'il n'y a pas d'erreur du tout.
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'
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.
Vérifiez la première ligne de /etc/rc.local pour être
#!/bin/sh -e
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
Vérifiez que tout fonctionne correctement en exécutant
sudo /etc/init.d/rc.local start
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).
2 suggestions.
Mon mauvais. Il suffit de cocher une case. Merci pour la correction enzotib:)