[Shutdown] Problème avec l'horloge ? (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
LeCrayonVert
Daikyu
Messages : 81
Inscription : ven. 30 juil. 2010, 12:17
Localisation : France

[Shutdown] Problème avec l'horloge ? (résolu)

Message par LeCrayonVert »

Salut à tous,
Alors voilà, la commande shutdown ne fonctionne correctement que lorsque le temps d'extinction est "distant" du temps actuel d'un multiple de 60 minutes ou d'une valeur inférieure à 60 minutes.
En gros s'il est 12:00
shutdown -h +1, +2, +3, ...., +60,+120,+180, etc... marcheront, mais pas +122 ou +183 par exemple
ainsi que shutdown -h 12:01, 12:02, ....13:00, 14:00, 15:00, etc...
Mais parfois c'est plus aléatoire et certaines valeurs entre 0 et 60 ne fonctionne pas
En fait dans le cas où ca ne marche pas, il n'y a pas de message broadcaster sur la console qui dit que le système va s'arrêter et effectivement l'arrêt ne fonctionne pas.

Apparemment la commande shutdown est fournie par sysvinit, ceci expliquerait cela ?
Assez embêtant tout de même, d'où pourrait venir cette perte de précision ?
Dernière modification par LeCrayonVert le sam. 07 août 2010, 12:39, modifié 1 fois.
Avatar de l’utilisateur
LeCrayonVert
Daikyu
Messages : 81
Inscription : ven. 30 juil. 2010, 12:17
Localisation : France

Re: [Shutdown] Problème avec l'horloge ? (Résolu)

Message par LeCrayonVert »

Bon en fait j'ai trouvé ...apparemment le message n'est pas broadcasté tout de suite il faut attendre le prochain multiple pour qu'il affiche...logique en fait.
Avatar de l’utilisateur
LeCrayonVert
Daikyu
Messages : 81
Inscription : ven. 30 juil. 2010, 12:17
Localisation : France

Re: [Shutdown] Problème avec l'horloge ? (résolu)

Message par LeCrayonVert »

Pour ceux que ca intéresse l'explication d'après les sources :

Code : Tout sélectionner

static int needwarning(int wt)
{
        int ret;

        if (wt < 10)
                ret = 1;
        else if (wt < 60)
                ret = (wt % 15 == 0);
        else if (wt < 180)
                ret = (wt % 30 == 0);
        else
                ret = (wt % 60 == 0);

        return ret;
}
Pour remédier à cela, il suffit de remplacer dans le fichier source shutdown.c à la ligne 699 (version 2.86 de sysvinit) :

Code : Tout sélectionner

if (wt<15 && !needwarning(wt)) warn(wt);
par

Code : Tout sélectionner

if (!needwarning(wt)) warn(wt);
Répondre