Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/03/2010, à 00:28

jamesbad000

[Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Hello,

Je suis sur Karmic 64 bit. j'ai configuré le contrôle des ventilo en suivant le tuto http://doc.ubuntu-fr.org/lm-sensors
En manuel ca marche à merveille et je loue les db en moins.

toujours selon les recommandations du tuto j'ai ajouté la commande de démarrage du service dans /etc/rc.local
mais ça ne démarre pas.

J'ai ajouté un log mais il n'apparait pas. Actuellement mon script est comme ci-dessous.

# By default this script does nothing.
/etc/init.d/fancontrol start > /var/init.d_fancontrol.log 2>&1
exit 0

si je lance à la main /etc/rc.local le fancontrol démarre bien et je retrouve un log...

Après lecture de pas mal de post, il semble que le démarrage doit être en multi-user pour que ce script soit lancé.

Donc je veux bien qu'on m'explique la façon la plus rationnelle de faire.
- passer en multi-user. comment ?
- placer le script à un endroit ou il sera exécuté quel que soit le mode
- changer de chaise avant de me retrouver le c.. par terre (ce n'est pas une option, mais un pense bête)

Voir s'il y a un tuto un peu détaillé sur la procédure de démarrage avec les répertoires rc0-9 ... Parce pour la lecture des script, mon décodeur déconne :-)

Dernière modification par jamesbad000 (Le 18/03/2010, à 23:37)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#2 Le 16/03/2010, à 22:11

gl38

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Cette page répond peut-être à ta question :
http://f3wm.free.fr/linux/lx_init.html
Cordialement,
Guy

Hors ligne

#3 Le 17/03/2010, à 00:36

jamesbad000

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Merci. Ca a l'avantage d'être assez synthétique.

en fin de compte le mode mono-utilisateur doit correspondre à un démarrage en "recovery mode" et les modes multi à un démarrage complet, avec plus ou moins de services activés.

Par ailleurs en farfouillant dans les script, les readme des rép rc* j'ai trouvé un renvoi sur les guidelines officiels du processus de démarrage http://www.debian.org/doc/debian-policy … s-sysvinit

Sans pour autant que ça me permette de comprendre vraiment pourquoi ce fancontrol ne démarre pas.

- Sinon, la commande runlevel me répond que je suis en niveau 2, donc "multi-utilisateur"

fred@Mirage5:~$ runlevel
N 2

- et je viens de découvrir que j'ai un lien S20fancontrol dans les runlevel 2 à 5, et le script qui va avec dans init.d
donc même avec ceinture et bretelle ça le fait pas, et j'en viens à me demander si mes scripts de démarrage sont bien exécutés d'une façon générale :
- Apparemment tous les scripts de démarrage sont prévus pour logger, mais je n'en trouve aucune trace avec le visionneur de journaux système. Ni dans /var/log. J'aimerais bien savoir ou vont tous ces message que je vois dans le code ??

- et je constate que je n'ai pas de fichier /etc/init.conf comme indiqué dans le man de init (mais c'est pareil sur une autre partition en Kubuntu64 9.10 ou Ubuntu32 9.04)

bref en même temps que j'avance le mystère s'épaissit...
bon en attendant une autre inspiration extérieur, je vais essayer me replonger dans ces guide lines, car je viens de voir qu'il y a un chapitre sur les messages...

Bonne nuit à tous


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#4 Le 17/03/2010, à 08:51

gl38

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Va dans /etc
dedans il y a un dossier init.d qui contient tout un tas de fichier de démarrage dont rc.local
Il y a aussi des dossiers rc0.d, rc1.d jusqu'à rc6.d qui sont parcourus suivant le niveau (=level) du démarrage. Ils ne contiennent pas tous la même chose, si tu démarres avec un niveau où rc.local n'y est pas, ton fichier rc.local ne sera pas exécuté.

Il peut y avoir aussi un problème de temporisation, bien que rc.local ce soit la dernière commande du démarrage, il se peut que les commandes précédentes ne soient pas complétement exécutées.

Essaie de mettre

touch /tmp/toto

dans rc.local
Si rc.local est exécuté, ça doit créer un fichier toto dans /tmp s'il n'y en a pas et mettre sa date à l'heure du démarrage.
Cordialement,
Guy

Hors ligne

#5 Le 17/03/2010, à 09:28

gl38

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Pour tout savoir ou presque sur les levels :
http://www.generation-linux.fr/index.ph … -runlevels
Cordialement,
Guy

Hors ligne

#6 Le 18/03/2010, à 23:33

jamesbad000

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Ce dernier tuto est vraiment bien !! Merci Guy.

Bon c'est résolu. Mon problème était du à l'activation du mode concurrency dans le script /etc/init.d/rc
Celui la même qui est chargé de lancer les script en fonction du runlevel.

J'ai pu confirmer en ajoutant une trace dans le 1er script de mon runlevel, ssh, que celui ci n'était pas appelé, donc apparemment ça génère une merde au niveau du rc lui même. Alors que j'avais compris que ça ne jouait que sur le parallélisme des script de même rang dans le runlevel...

Étonnamment, ça avait également engendré la désactivation du timer dans le menu de démarrage de GRUB.
Ce qui m'a perdu un peu plus, car j'avais justement modifié la valeur du timer...
Il y a visiblement un mécanisme de switch qui semble conditionné au fait que le démarrage précédent c'est mal passé !
Ce qui est une manifestation pour le moins sibylline du problème... 

Bon je crois que je vais pas me lancer à essayer de debugger ce truc pour la poignée de seconde que me faisait gagner le parallélisme. Évidemment quand aucun service ne démarre ça met au moins 5 secondes de moins...

Dernière modification par jamesbad000 (Le 18/03/2010, à 23:52)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#7 Le 08/06/2010, à 15:36

miyune

Re : [Résolu] /etc/rc.local ne semble pas s'éxécuter au démarrage

Je proposerais de modifier le script comme suit pour aider au débuggage :

/bin/sleep 10
/bin/echo `date` > /tmp/rc.local.log
/bin/echo "rc.local a démarré" >> /tmp/rc.local.log
/etc/init.d/fancontrol start > /var/init.d_fancontrol.log 2>&1 || true
/bin/echo "rc.local a terminé" >> /tmp/rc.local.log
exit 0

Ceci créra un fichier de log a l'emplacement /tmp/rc.local.log

Pour tester le script faire :

$ sudo -i               # ceci permet d'acceder a la console en root
# cd /etc
# ./rc.local
# ls -l /tmp/rc.local.log

Si cette derniere commande ne retourne pas de resultat c'est que le script n'a peut-être pas les droits suffisant pour s'executer. Ce qui ne semble toutefois pas être le cas ici smile

Pour voir le contenu du log faire :
# cat /tmp/rc.local.log

Si jusqu'ici tout va bien alors le script s'execute normalement...

Attention a l'option -e dans le shabang en debut du script, cela indique que le script arrêtera de s'executer a la premiere commande qui retourne une erreur... c.a.d si j'ai deux commande

cmd1
cmd2

Si cmd1 retourne une erreur (exit code autre que 0) alors cmd2 ne sera pas executé, pour explicitement continuer l'execution du script en ignorant l'erreur retournée par cm1 il faut modifier le code ainsi :

cmd1 || true
cmd2

Je mentionne juste cet état de fait au cas ou plusieurs commande existeraient dans le rc.local file, ce qui ne semble pas être le cas ici.

Je rajouterais aussi une ligne "/bin/sleep 10" en debut du script ce qui va le faire attendre 10 seconde avant de continuer ... pourquoi ? Simplement parce que rc.local est lancé au démarrage mais il se peut que la commande (ou script) "fancontrol" requiert certains services ou élément qui ne sont pas encore totalement prêt (initialisation non démarré ou en cours) au moment ou rc.local s'execute... de ce fait cette commande ne peut s'executer correctement.

Toutefois tu semble mentionner que ton script ne s'execute pas du tout durant la phase démarrage et je n'ai pas de solution pour ce point précis.

Mon but n'etait que d'ajouter certains éléments d'information pour aider a débugger un script rc.local et confirmer qu'il s'execute au démarrage ou non...

Bon courage à tous et bon "hacking" !

Hors ligne