Comment désactiver le spam de message «Time has been changed» de systemd dans le journal systemd lors de l'utilisation de sdwdate?

10

En raison de l'utilisation combinée de l'étirement Debian, qui utilise systemd par défaut et sdwdate (qui utilise le Slow Clock Adjuster ( gh )), mon horloge système est fréquemment modifiée.

En conséquence, il journalctl -fest sans cesse spammé par.

[...]
Nov 07 13:46:49 host systemd[766]: Time has been changed
Nov 07 13:46:50 host systemd[766]: Time has been changed
Nov 07 13:46:51 host systemd[766]: Time has been changed
[...]

Ce n'était pas un problème sur Debian Wheezy qui utilisait sysvinit.

Comment systemd peut-il être configuré pour ne pas envoyer le Time has been changedmessage au journal?

Une question connexe Comment désactiver le spam du message "Time has been changed" de systemd dans / var / log / syslog sur Debian Jessie? a été résolu, mais cette solution ne fonctionnera pas ici.

adrelanos
la source
systemdse soucie profondément des minuteries. Cela semble être déclenché par la mise à jour de l'horloge matérielle hwclock --systohc, par exemple , appelez-vous cela toutes les secondes?
mr.spuratic
@ mr.spuratic en regardant la source liée, cela semble être exactement ce qui se passe.
Dan Getz
Oui, c'est ce que fait le réglage lent de l'horloge (sclockadj). @ mr.spuratic
adrelanos
1
demande de fonctionnalité systemd: option to disable systemd's “Time has been changed” message spam in journal log github.com/systemd/systemd/issues/5207
adrelanos

Réponses:

10

Le message provient des src/core/manager.csources systemd. Il est codé en dur pour utiliser le niveau de journalisation du système INFO.

Par défaut, systemd enregistre les messages qui ont un niveau INFO, si vous pouvez changer cela en changeant /etc/systemd/system.confpour:

LogLevel=notice

mais vous perdrez également bon nombre d'autres messages d'information.

Il serait peut-être préférable de patcher src/core/manager.cpour lire:

 log_struct(LOG_DEBUG,
            MESSAGE_ID(SD_MESSAGE_TIME_CHANGE),
            "MESSAGE=Time has been changed",
            NULL);

( LOG_DEBUGest défini comme le niveau supérieur et le plus élevé suivant sys/syslog.h), ou commentez l'ensemble du message.

Je n'ai pas trouvé de moyen de signaler uniquement les modifications de la minuterie qui ont une taille minimale de X secondes. Mais si cela est possible, cela rendrait sans aucun doute un patch plus complexe et sujet aux erreurs.

Anthon
la source