[systemd reflector] Je veux une unit qui fonctionne (résolu)

Applications, problèmes de configuration réseau
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

[systemd reflector] Je veux une unit qui fonctionne (résolu)

Message par Moviuro »

Plop,

Pour exprimer mon état à l'écriture de ce post, je vais utiliser ça : :evil:
Voilà, ça c'est ma tête.

Maintenant : Malgré tous mes efforts pour comprendre (aïe, ma tête) et tester (pusieurs semaines sans succès !) différents services, je rends les armes :

Code : Tout sélectionner

# cat /etc/systemd/system/timer-daily.target.wants/reflector.service 
[Unit]
Description=Update mirorlist
Requires=network-online.target

[Service]
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Type=simple
TimeoutSec=600
Restart=on-failure
ExecStart=-/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
Trop cool, non ? Sauf que ça foire comme un veau :

Code : Tout sélectionner

root@schizophrenia ~ # systemctl status reflector.service                                
● reflector.service - Update mirorlist
   Loaded: loaded (/etc/systemd/system/timer-daily.target.wants/reflector.service)
   Active: inactive (dead) since Sat 2014-06-07 00:00:12 CEST; 2h 31min ago
  Process: 17052 ExecStart=/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist (code=exited, status=1/FAILURE)
 Main PID: 17052 (code=exited, status=1/FAILURE)

Jun 07 00:00:02 schizophrenia systemd[1]: Starting Update mirorlist...
Jun 07 00:00:02 schizophrenia systemd[1]: Started Update mirorlist.
Jun 07 00:00:12 schizophrenia reflector[17052]: error: failed to retrieve mirror data: (The read operation timed out)
3 root@schizophrenia ~ # date
Sat Jun  7 02:32:20 CEST 2014
Donc :
  • Le restart on-failure fait pas son boulot ou systemd fait exprès de donner des noms trompeurs aux champs des units. (clairement, c'est vraiment ce qui me casse les pieds en ce moment)
  • C'est quoi l'utilité de network-online.target ? sa définition ? Comment je dis que network-online, c'est pouvoir ping une machine loin avec son nom et pas son IP ?
Voilà, je vous supplie de mettre fin à ma souffrance (soit en me disant de passer à *BSD, soit en résolvant ce problème).

EDIT: l'unit s'est relancée sur mon autre PC, en accord avec le timer quotidien. Donc le timer ne s'arrête pas en cas d'échec, c'est cool. (Liste des miroirs créée la dernière fois le 2 juin mais l'unit a été lancée ce matin, le 7 juin)
Dernière modification par Moviuro le mer. 11 juin 2014, 20:37, modifié 1 fois.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par FoolEcho »

Salut,

Pas de faux-espoirs à te communiquer, vu que les questions de timer avec systemd sont sur ma liste «des trucs à regarder» (depuis que cronie a été sorti du groupe base... donc ça fait un moment déjà)... :roll:

Tu as regardé aussi du côté des discussions sur ce sujet ?
https://wiki.archlinux.org/index.php/Ta ... uggestions
Moviuro a écrit :ExecStart=-/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
Mais sinon... Il ne faut pas protéger la regexp ? :?

Code : Tout sélectionner

/usr/bin/reflector -i "(fr|nl|be)." -f 5 --save /etc/pacman.d/mirrorlist
«The following statement is not true. The previous statement is true.» :nage:
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par Moviuro »

FoolEcho a écrit :Tu as regardé aussi du côté des discussions sur ce sujet ?
https://wiki.archlinux.org/index.php/Ta ... uggestions
Nope, je connaissais pas, mais visiblement c'est le caca partout :D
FoolEcho a écrit :
Moviuro a écrit :ExecStart=-/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
Mais sinon... Il ne faut pas protéger la regexp ? :?

Code : Tout sélectionner

/usr/bin/reflector -i "(fr|nl|be)." -f 5 --save /etc/pacman.d/mirrorlist
Non, ma commande est bien correcte puiqu'elle crache des fichiers propres correspondants :

Code : Tout sélectionner

% cat /etc/pacman.d/mirrorlist
[...]
# With:       reflector -i '(fr|nl|be).' -f 5 --verbose --save /etc/pacman.d/mirrorlist
[...]
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par mélodie »

Moviuro a écrit :
FoolEcho a écrit :Tu as regardé aussi du côté des discussions sur ce sujet ?
https://wiki.archlinux.org/index.php/Ta ... uggestions
Nope, je connaissais pas, mais visiblement c'est le caca partout :D
Bonjour,

En ce cas, je suggère d'aller voir si un rapport de bug existe, si oui, ajouter ton témoignage, si non, en créer un. https://bugs.archlinux.org/
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par Moviuro »

mélodie a écrit :En ce cas, je suggère d'aller voir si un rapport de bug existe, si oui, ajouter ton témoignage, si non, en créer un. https://bugs.archlinux.org/
hahaha, la bonne blague. Naaaan, les archeux anglophones vont m'envoyer ch*er comme un malpropre pour un problème aussi peu intéressant que ça et qui ne requiert que quelques heures de pensée, quelques touffes de cheveux arrachées :)
Par contre, il semble qu'une solution se dessine sur IRC en ce moment, je ferai un rapport complet ici. Et j'irai compléter notre wiki après et proposer aux anglophones encore après.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par benjarobin »

Ton problème me semble assez simple personnellement à résoudre... Il suffit de lire le man de systemd, et non essayer des options qui n'ont aucune cohérence entre elles. Désolé si la remarque te semble agressive, elle ne l'est pas.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par Moviuro »

Merci benjarobin, tu fais exactement ce que tout le monde m'a fait jusqu'à maintenant : me dire que c'est facile. Merci ! Merci !
Peut-être que c'est facile mais pourquoi vous m'aidez pas !? J'ai lu les man ! Je les comprends pas ! Donc arrêtez de polluer le fil avec des réponses inutiles et aidez-moi une bonne fois pour toutes.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par benjarobin »

Désolé, j'ai juste oublié de rajouter dans mon message précédent que si dimanche ou lunfi j'ai 5 min, j'essayerai de te pondre un truc fonctionnel. Désolé, c'est juste un oubli, j'ai du être interrompu lors de la rédaction de mon message par autre chose entre temps...
Par contre Moviuro ton dernier message ne donne pas vraiment envie de t'aider, mais je comprends très bien ta frustration :copain:
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par Moviuro »

:copain:
En attendant, je vais ouvrir un nouveau post pour un autre souci que j'ai ;)
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd, reflector] Je veux une 'unit' qui fonctionne

Message par Moviuro »

Bon alors, ça y est, j'ai un truc qui fonctionne comme attendu.

L'unit suivante teste le ping vers un hôte spécifié après le '@'. Si l'hôte ne répond pas, on réessaye.
L'unit s'arrête une fois qu'elle a dit 'SUCCESS' donc à chaque fois qu'une unit appellera reachable-retry, on a la certitude d'avoir une connexion au-dit hôte.

Code : Tout sélectionner

# cat /etc/systemd/system/reachable-retry@.service             
[Unit]
Description=Test if %i is reachable
After=systemd-networkd-wait-online.service
# Customize to your own needs, with network.target or whatever works less worse with you
 
[Service]
Type=forking
ExecStart=/usr/bin/ping -c1 %i
Restart=on-failure

[Install]
WantedBy=multi-user.target
On ajoute les dépendances dans les services :

Code : Tout sélectionner

# cat /etc/systemd/system/timer-daily.target.wants/reflector.service
[Unit]
Description=Update mirorlist
# Fire up the tester
Requires=reachable-retry@www.archlinux.org.service
# Wait for it to return SUCCESS
After=reachable-retry@www.archlinux.org.service

[Service]
# Copied from wiki
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Type=simple
TimeoutSec=600
Restart=on-failure
ExecStart=-/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
# Customize to your own needs
Voilà, donc des heures sur IRC, à lire des man pour pondre ces 11 :!: malheureuses lignes !
Dernière modification par Moviuro le jeu. 12 juin 2014, 00:08, modifié 2 fois.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par benjarobin »

Désolé j'avais encore oublié de te répondre. Je t'aurais répondu ceci qui est très similaire à ta solution :
Utilisation du paquet de AUR : network-wait-online ainsi que le PKGBUILD suivant :

Code : Tout sélectionner

# cat /etc/systemd/system/timer-daily.target.wants/reflector.service
[Unit]
Description=Update mirorlist
After=network.target

[Service]
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Type=simple
TimeoutSec=600
Restart=on-failure
ExecStart=-/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Moviuro »

Pas de soucis,

L'avantage de ma méthode, c'est que ça n'utilise pas de scripts ou autre, juste pur systemd (et ping, OK).
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par mélodie »

Moviuro a écrit :Pas de soucis,

L'avantage de ma méthode, c'est que ça n'utilise pas de scripts ou autre, juste pur systemd (et ping, OK).
Salut,

Tu nous a parlé de mettre à jour notre wiki lors d'un post précédent ? :)
C'est toujours bienvenu d'autant qu'il n'y a pas de page pour Reflector sur le wiki archlinux.fr. :chinois:
Reventlov
newbie
Messages : 9
Inscription : sam. 26 févr. 2011, 12:02

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Reventlov »

Je comprends pas l'utilisation de Type=fork:
« If set to forking, it is expected that the process configured with ExecStart= will call fork() as part of its start-up. »

C'est pas le cas de ping, j'ai l'impression, et donc si ça fonctionne ça me semble plus un "hack" qu'autre chose.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par benjarobin »

Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Reventlov
newbie
Messages : 9
Inscription : sam. 26 févr. 2011, 12:02

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Reventlov »

Le problème, c'est que le type oneshot ne supporte pas autre chose que "no" pour le paramètre Restart. J'ai ouvert un thread similaire sur le forum anglophone: https://bbs.archlinux.org/viewtopic.php?pid=1424891

Le but est de comprendre/d'apprendre un peu mieux comment systemd fonctionne.
Par ailleurs, j'utilise le service de moviuro qui fonctionne très bien :) . Mais je comprends pas exactement pourquoi.
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Moviuro »

Avec le type oneshot, il n'y a aucune chance que le service redémarre...

Et pour le fork, c'est parce que l'unit attend le retour de ping avant de dire SUCCESS ou FAILURE. Si je le mets en "normal", bah reachable-retry@ est lancé et reflector n'attend pas de savoir si reachable-retry@ renvoit SUCCESS.
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Reventlov
newbie
Messages : 9
Inscription : sam. 26 févr. 2011, 12:02

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Reventlov »

Le problème c'est que la doc précise que ping devrait forker. Or ce n'est pas le cas.

Et non, mon but n'est pas d'avoir un service ping qui se relancerait automatiquement, mais d'avoir un service qui dépend du résultat du oneshot ping pour se lancer.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par benjarobin »

@Reventlov C'est pour cela que j'avais créé un paquet nommé network-wait-online .
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [systemd reflector] Je veux une unit qui fonctionne (rés

Message par Moviuro »

mélodie a écrit :Tu nous a parlé de mettre à jour notre wiki lors d'un post précédent ? :)
C'est toujours bienvenu d'autant qu'il n'y a pas de page pour Reflector sur le wiki archlinux.fr. :chinois:
C'est fait, cheffe ! https://wiki.archlinux.fr/Reflector
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Répondre