Créer un service systemd

Mon service est-il bien écrit?

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J’essaye de créer mon propre service systemd sous Fedora 25 mais je n’arrive pas à le faire démarrer. Pouvez-vous m’indiquer ce qui ne va pas?

Le service a pour but d’autoriser les connexions vers xhost depuis ma session pour pouvoir lancer gparted ou encore gedit qui à cause d’un bug ne peuvent pas se lancer si on ne le fait pas et ce de le faire à chaque démarrage.

Le service : enable.xhost.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Enable xhost

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/startup/enable-xhost.sh

[Install]
WantedBy=graphical.target

Le script /startup/enable-xhost.sh :

1
2
#!/bin/bash
xhost +local:user

Merci d’avance

Édité par Typhlos

+0 -0
Auteur du sujet

Voilà ce que me dit journalctl :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
● enable-xhost.service - Enable xhost
   Loaded: loaded (/etc/systemd/system/enable-xhost.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since dim. 2017-03-12 11:56:56 CET; 5min ago
  Process: 995 ExecStart=/startup/enable-xhost.sh (code=exited, status=203/EXEC)
 Main PID: 995 (code=exited, status=203/EXEC)

mars 12 11:56:56 asus-n750jv-fedora systemd[1]: Starting Enable xhost...
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Main process exited, code=exited, status=203/EXEC
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: Failed to start Enable xhost.
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Unit entered failed state.
mars 12 11:56:56 asus-n750jv-fedora systemd[1]: enable-xhost.service: Failed with result 'exit-code'.

Édité par Typhlos

+0 -0

Est-ce que tu es sûr d’avoir besoin du RemainAfterExit=yes ? Est-ce que tu peux vérifier si malgré cela ta commande a bien été lancée ?

Par ailleurs, tu pourrais mettre la commande directement dans le service. ;)

+0 -0
Auteur du sujet

Je l’ai enlevé ça ne change rien et quelque soit le cas, la commande ne se lance pas.

Je l’ai mise directement ^^ (bin/bash -c "xhost +local:user" c’est bien ça?)

Édité par Typhlos

+0 -0

Cette réponse a aidé l’auteur du sujet

Je l’ai mise directement ^^ (bin/bash -c "xhost +local:user" c’est bien ça?)

Typhlos

ExecStart=/bin/xhost +local:user , avec le slash devant bin :)

Du coup j’ai testé de mon côté, j’ai un "fail to open display" puisque évidemment il ne connait pas la session X (ce qui sera encore plus le cas au démarrage du système). Tu es sûr d’avoir besoin de lancer ça comme un service systemd ?

+1 -0
Auteur du sujet

Oui je sais, d’où le graphical.target ^^

J’en ai besoin car il y a un bug dans Fedora 25 qui fait que des applications se basant sur gtk (et encore pas forcément toutes j’ai l’impression mais c’est le cas pour gparted ou encore grub-customizer) ne se lancent pas et renvoie une erreur Gtk-WARNING **: cannot open display: :0 et qui se règle à l’aide de cette commande mais qui doit être lancée à chaque redémarrage. D’où ma volonté de le faire via systemd.

Edit : En remplaçant la ligne ExecStart par ce que tu as indiqué ça marche, merci. Cependant j’ai la même erreur que toi.

Édité par Typhlos

+0 -0

Cette réponse a aidé l’auteur du sujet

C’est normal que le service n’arrive pas à ouvrir le display, puisqu’il ne sera jamais démarré dans un contexte où la session X est connue. Le target graphical n’est pas ce que tu recherches ici (typiquement il est atteint lorsque le DM est prêt, pas lorsque la session X de l’utilisateur est démarrée).

Peut-être que tu peux t’en sortir en rajoutant simplement Environment=DISPLAY=:0 dans la section Service de ton service, mais ce n’est pas la vraie bonne manière de procéder. Si tu veux le faire proprement, il faudrait lancer xhost lorsque ta session X est démarrée. On préfère utiliser le DM pour ça plutôt que systemd. Voir ici pour les détails de comment y arriver.

+1 -0
Auteur du sujet

Je sais mais cependant tous les programmes n’ont pas encore été portés pour Wayland. D’où la présence de XWayland qui permet de faire la transition entre X.org et Wayland. Cependant, j’ai besoin de lancer cette commande car sinon des programmes comme gparted ou grub-customizer ne se lancent pas et pour l’instant, c’est le seul fix qui ait été trouvé j’ai l’impression.

+0 -0
Auteur du sujet

J’ai l’impression mais le fix je le connais, il s’agit juste de faire en sorte qu’il se lance tout seul à l’ouverture de ma session mais @SimSonic m’a indiqué comment faire, donc je devrais m’en sortir ^^

+0 -0

Je sais mais cependant tous les programmes n’ont pas encore été portés pour Wayland. D’où la présence de XWayland qui permet de faire la transition entre X.org et Wayland. Cependant, j’ai besoin de lancer cette commande car sinon des programmes comme gparted ou grub-customizer ne se lancent pas et pour l’instant, c’est le seul fix qui ait été trouvé j’ai l’impression.

J’arrive à les lancer naturellement sous GNOME Wayland via leur icône dans le menu, tu es sûr que cela ne fonctionne pas ainsi ? Il faudrait voir pour rapporter le bogue dans ce cas.

Amateur de Logiciel Libre et de la distribution GNU/Linux Fedora. #JeSuisArius

+1 -0
Auteur du sujet

J’en suis certain, sans passer la commande xhost +local:user ou même plus généralement xhost +, je ne peux pas les lancer et lorsque je les lance via un terminal, j’obtiens l’erreur : (gpartedbin:16638): Gtk-WARNING **: cannot open display: :0 (obtenue ici avec gparted mais est valable aussi avec grub-customizer)

De mémoire, il avait déjà été remonté, mais je vais le rapporter.

Edit : ce n’est pas un bug, mais c’est voulu. Et la solution pour contourner ceci est en réalité de passer la commande +si:localuser:root.

Édité par Typhlos

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte