• [^] # Re: systemd a bon dos

    Posté par . En réponse au journal et ce qui devait arriver, arriva .... Évalué à 9.

    Tu balances cette phrase comme si c'était normal
    Ca l'est

    Bon, quand tu me demanderas d'aller à gauche, j'irai tout droit

    Ben dans ce cas tu ne fais pas ce que je t'ai demandé. Quand je demande un reload et qu'un serveur fait un restart il fait ce que je lui ai demandé (ie prendre en compte la nouvelle config). Si le concepteur du logiciel estime que pour prendre en compte la nouvelle config il faut nécessairement faire un restart, il est probable qu'il ait raison.

    et c'est tout à fait légitime que systemd essaye de forcer les soft à être corrigés plutôt que de permettre des bidouilles.

    Non.

    Le truc c'est que le reload est déjà en lui même une bidouille - bien pratique certes, mais une bidouille. C'est même une bidouille assez récente en vrai et pas mal de versions un peu ancienne des logiciels ne supportent pas le reload et/ou l'interpretent comme un restart (On parle de trucs assez mainstream, genre apache 1 ou encore sendmail) et il y a encore pas mal de paramètres de pas mal de daemons qui nécessitent de toutes les façon un restart pour être prise en compte (un simple reload ne suffisant pas).

    Pour signifier le reload on utilise une autre bidouille : envoyer à un daemon un signal qui n'a rien à voir avec la choucroute. Le SIGHUP sur un daemon c'est comme un poisson avec une bicyclette, si on est pas prévenu on voit pas vraiment ce que l'un et l'autre font ensemble.

    Pour systemd c'est encore une bidouille de plus : si un daemon n'a pas d'interface DBus, alors on va lui envoyer un petit SIGHUP pour lui dire de recharger sa config. Donc je ne sais rien du daemon, on a pas d'interfaces pour dialoguer ensemble, mais je vais partir des principes suivants :
    a) il a une fonction reload
    b) cette fonction reload peut être déclenchée par un SIGHUP
    c) Mon SIGHUP sera nécessairement pris en compte et le reload fonctionnera nécessairement (on a toujours pas d'interface pour dialoguer - donc si le serveur répond "pas maintenant" ou "j'ai pas les droits sur le fichier de config" on l'a dans l'os)
    d) Ca ne génèrera pas de restart du daemon
    e) Accessoirement quand on fait un reload de tel ou tel processus il n'y a pas de pre ou de post traitements à faire.

    Bien entendu ca marche dans 99% des cas avec des daemons relativement modernes dans des paramétrages relativement standard - mais de là à dire que c'est de la lutte contre la bidouille (alors qu'il y en a déjà trois grosses pour mettre en place cette "lutte") et que systemd peut s'accorder le droit de faire comme il veut "pour le bien de tous", permet moi d'être circonspect.

    Si les démons font la différence entre reload, reload_now et force_reload (avec toutes les variantes possibles et immaginables) c'est bien que SIGHUP à la barbare ne suffit pas, chercher à l'imposer comme LA référence est idiot. (Et ce n'est d'ailleurs pas le but de systemd - le hack du SIGHUP c'est plus un mode de compatibilité qu'autre chose.)