[systemd-notify] Impossible à utiliser

Autres projets et contributions
Avatar de l’utilisateur
cycyx
yeomen
Messages : 222
Inscription : dim. 02 mars 2008, 19:53

Re: [systemd-notify] Impossible à utiliser

Message par cycyx »

benjarobin a écrit :J'avais mal compris le sens de MAINPID et je crains que toi aussi. Le but de --pid ou de MAINPID est juste d'indiquer à systemd que le processus principal d'un service est celui spécifié. J'ai compris ceci en regardant le code très en détail, mais en faites c'était très clairement indiqué dans la doc...
Je l'avais bien compris comme ça.
systemd-notify sert juste à dire à systemd : "Hey Machin ! Le processus $DAEMON tourne toujours, il va bien, ne le redémarre pas, merci."

Et à mon sens, systemd-notify est mal conçu.
Il devrait à minima utiliser le PID de son père pour envoyer ça à systemd, ou mieux, exiger un PID comme paramètre.
benjarobin a écrit :Le problème de systemd-notify, qui n'a surement jamais vraiment fonctionné, c'est qu'il envoi un message avec son identifiant (pid) et se termine de suite. Quand systemd reçoit le message il ne reconnait pas ce pid car il n'existe déjà plus. Donc un gros correctif à été réalisé ici https://bugs.freedesktop.org/show_bug.cgi?id=75680 mais qui a été cassé par quelqu'un par la suite (le but de mon premier patch). Sauf que le correctif du rapport de bug n'avait en effet pas corrigé entièrement le problème de systemd-notify qui n’envoie pas dans tous les cas un pid non nul (surement le sens de tes derniers messages...)
Bref j'ai donc soumis un dernier patch
Oui, tu m'as compris : systemd-notify devrait de toute façon associer son message avec un autre PID que le sien. Et le fait qu'il s'arrête de suite ne devrait pas poser de problème.

systemd-notify envoie un message disant "le processus PID tourne toujours, tout va bien" et s'arrête.
systemd remarque qu'il a un message en attente, envoyé par un inconnu peut-être, qui dit que PID tourne. Il n'arrête donc pas PID.
Le fait de ne pas pouvoir identifier l'expéditeur n'est pas nécessaire fonctionnellement (au niveau de la sécurité c'est autre chose...).

De toute façon, merci pour ta contribution : je ne suis pas développeur (sysadmin) et je n'aurais pas pu faire ce que tu as fait (ça doit bien faire 15 ans que je n'ai pas fait de C...).
Par contre, je vais attendre que ton patch soit intégré upstream : pas le courage de recompiler systemd là.
Laptop1 : Clevo W110ER, core i5-3210M, 8Gb RAM, Intel® Ivybridge Mobile (GT2)/NVIDIA GT 650M, x86_64
Laptop2 : Sony Vaio SR41M, Core 2 Duo T6400, 4Gb RAM, ATI Radeon HD 4750, x86_64
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd-notify] Impossible à utiliser

Message par benjarobin »

cycyx a écrit :Le fait de ne pas pouvoir identifier l'expéditeur n'est pas nécessaire fonctionnellement (au niveau de la sécurité c'est autre chose...).
Déjà question sécurité on doit pouvoir identifier la personne envoyant le message. De plus on a besoin de l'identifiant (le pid) pour savoir quel est le service concerné !
Oubli l'option --pid / MAINPID, c'est une tout autre chose qui porte à confusion : je suis persuadé que tu n'as pas compris à quoi sert cette option, comme moi au début. Le but de cette option est juste d'indiquer au service quel est le processus principal...
Si tu veux mettre à jour le statut de ton service, ou juste indiquer qu'il est "ready", il faut bien savoir de quel service on parle non (l'expéditeur) ?
Donc pour cela la stratégie, on récupère le pid du processus envoyant le message, systemd récupère ce pid, et cherche le cgroup, possédant un tel pid, associé au service.

Le code à toujours correctement fonctionné, au niveau C, c'est juste l'utilitaire systemd-notify qui n'a jamais vraiment fonctionné. Il y a des services qui utilisent directement l'interface du code C et ne passe pas par systemd-notify et donc ils n'ont pas de souci

Mais il est vrai qu'il est surprenant que personne n'est utilisé avant systemd-notify qui est apparu en version 183 soit le 2012-05-25
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
cycyx
yeomen
Messages : 222
Inscription : dim. 02 mars 2008, 19:53

Re: [systemd-notify] Impossible à utiliser

Message par cycyx »

Si, si, je t'assure que j'ai bien compris l'option pid/MAINPID. Cela sert à identifier le daemon à proprement parler, plutôt qu'un quelconque processus fil/subshell/que sais-je.

Pour la sécurité, j'ai bien cela en tête, mais je parlais fonctionnalité de base, pas fonctionnement parfait :p

Reste que comme tu dis, systemd-notify n'a jamais fonctionné, alors qu'il est conçu pour les scripts, qui n'ont pas accès à l'API en C.

Extrait de la manpage :

Code : Tout sélectionner

This is mostly just a wrapper around sd_notify() and makes this functionality available to shell scripts.
Bref, j'espère que ton patch fonctionne, sera intégré et qu'un systemd-notify fonctionnel sera dans une prochaine mise à jour...
Laptop1 : Clevo W110ER, core i5-3210M, 8Gb RAM, Intel® Ivybridge Mobile (GT2)/NVIDIA GT 650M, x86_64
Laptop2 : Sony Vaio SR41M, Core 2 Duo T6400, 4Gb RAM, ATI Radeon HD 4750, x86_64
Avatar de l’utilisateur
cycyx
yeomen
Messages : 222
Inscription : dim. 02 mars 2008, 19:53

Re: [systemd-notify] Impossible à utiliser

Message par cycyx »

Par curiosité, tu peux copier ton patch (ou un lien) ici ?
Laptop1 : Clevo W110ER, core i5-3210M, 8Gb RAM, Intel® Ivybridge Mobile (GT2)/NVIDIA GT 650M, x86_64
Laptop2 : Sony Vaio SR41M, Core 2 Duo T6400, 4Gb RAM, ATI Radeon HD 4750, x86_64
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd-notify] Impossible à utiliser

Message par benjarobin »

Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
cycyx
yeomen
Messages : 222
Inscription : dim. 02 mars 2008, 19:53

Re: [systemd-notify] Impossible à utiliser

Message par cycyx »

Merci.
Laptop1 : Clevo W110ER, core i5-3210M, 8Gb RAM, Intel® Ivybridge Mobile (GT2)/NVIDIA GT 650M, x86_64
Laptop2 : Sony Vaio SR41M, Core 2 Duo T6400, 4Gb RAM, ATI Radeon HD 4750, x86_64
Répondre