logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-06-2021 06:48:35

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

[Résolu][Contournement] Lancer script juste avant la fermeture session

Bonjour,

Je cherche à lancer un script juste avant la fermeture de la session (Xfce) graphique.
Le seul endroit trouvé pour mettre la commande lançant le script est dans la config de ligthdm où on trouve une entrée :

session-cleanup-script=

Sauf que cette commande est lancée une fois la session arrêtée et avec des droits root ce qui ne m'intéresse pas.


J'ai bien un dossier (vide) /home/$USER/.config/xfce4-session, mais je ne sais pas quoi y mettre ni sous quelle forme (script, fichier desktop ...) et encore moins comment nommer le fichier, et je ne trouve aucune information concernant l'utilisation de ce dossier.

De plus, j'aimerais que le script soit lancé en cas de simple fermeture de session et aussi en cas d'extinction du PC (qui doit passer par une fermeture de session).

En vous remerciant des pistes, liens ou autres conseils prodigués.

Edit:
Mis en "Résolu" "Contournement" : voir message #22 Solution de contournement
Ouf, tout juste 70 caractères le titre big_smile

Dernière modification par Tawal (07-06-2021 11:44:03)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#2 02-06-2021 07:23:58

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Salut,

en farfouillant là, j'ai trouvé un display-stopped-script qui is run after an X server exits. Ça pourrait correspondre à ton besoin, mais tu ne sembles pas aimer le fait que It is run as root.

Ça va être compliqué.

AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#3 02-06-2021 11:26:37

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

C'est bien mais tu as trouvé ça où ?

Pour le coté "root", je peux m'en débrouiller avec un sudo -u USER
.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#4 02-06-2021 11:35:45

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

jpt a écrit :

en farfouillant

Passe ta souris sur ""


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#5 02-06-2021 12:40:12

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Oups, j'avais pas vu le lien.

Mais le souci, c'est que cette option se lance après la fermeture du serveur X, or je cherche à lancer un script/commande avant.
Une sorte de pre-invoke ...

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#6 02-06-2021 12:51:47

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Tawal a écrit :

je cherche à lancer un script/commande avant.

Ah !...
J'avais cru comprendre que tu voulais lancer un truc à la fermeture de la session mais en fait il te faut encore la session et pire, également le serveur X. Je ne vois pas trop, là…
Et j'ai l'impression que je ne suis pas le seul, au vu de l'avalanche de réponses, sad

Tawal a écrit :

Une sorte de pre-invoke...

C'est quoi c'te bête ?


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#7 02-06-2021 12:59:19

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

jpt a écrit :

Tawal a écrit :

Une sorte de pre-invoke...


C'est quoi c'te bête ?


dpkg possède des fichiers qu'il lit avant toute exécution et dans lesquels tu peux faire quelque chose avant l'invocation réelle de dpkg.
Dans ce fichier, il y a une section pre-invoke et une section post-invoke.
Si ça existait pour la session, ce serait super !


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#8 02-06-2021 13:22:14

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#9 03-06-2021 07:24:03

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Merci Croutons, c'est très intéressant wink

Mais dans les commentaires je trouve :

@John9631 Does this execute upon logout? If it's only run at shutdown, then it's useless for me. Anything to run upon logout with systemd – Anwar Mar 30 '18 at 16:41
@Anwar, I think you're looking for something that doesn't exist. User login & out seems to be a user level process and varies depending on what you run.For more information: superuser.com/questions/970883/… – John 9631 Mar 31 '18 at 10:56


Il va falloir approfondir si ça reste possible, car John9631 a l'air de dire le contraire ...
Et je poursuis avec le lien donné par John9631 : https://superuser.com/questions/970883/ … s-in-linux
C'est pas évident ...

Edit :
Mes tests restent en échec.

Dernière modification par Tawal (03-06-2021 07:26:45)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#10 03-06-2021 10:54:03

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#11 05-06-2021 15:02:19

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Lol Croutons, ton 2ième lien est le même en français que le 1er big_smile

Toujours est-il que j'ai fait plusieurs tests infructueux.
J'arrive bien à lancer un script avant l'arrêt mais pas avant la fermeture de la session graphique.
J'ai pourtant joué avec graphical-session.target ...

Il faudrait peut-être créer une "target" pour ce faire, mais franchement c'est trop compliqué pour moi ...

Merci de tes liens wink

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#12 05-06-2021 20:58:25

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

@Tawal Serait-il possible de connaître l’usage de ton script à la fermeture de session ?
L’usage de systemd est probablement une piste intéressante sauf que l’exécution du script sera affecté d’un time out de 90s par défaut au delà duquel le script sera arrêté. Si ton application est sensible ce n’est peut-être pas la meilleur solution. voir un exemple perso là https://debian-facile.org/utilisateurs: … sauvegarde.
Penser aussi à : qui dit script en fin de session dit script suffisamment robuste qui ne se plante pas.

@Croutons Attention, les règles d’usage du site du dernier lien que tu as fournis ne sont pas très clean.

We use cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content and targeted ads, to analyze our website traffic, and to understand where our visitors are coming from.

By continuing, you consent to our use of cookies and other tracking technologies and affirm you're at least 16 years old or have consent from a parent or guardian.


Tousse antique Ovide !

Hors ligne

#13 06-06-2021 09:19:51

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Hello,

@Philou92:
Mon script s'applique à une application propriétaire dont je tairais le nom.
Mais je peux faire une analogie avec une autre application, libre celle-là: Audacious.
Donc mon script vient piloter cette application afin qu'elle réalise certaines actions, comme par exemple, mettre à jour les listes de lectures.
Or, ces actions ne peuvent-être faites qu'avec l'application graphique démarrée.
Je peux (et ça fonctionne) lancer mon script à l'ouverture de session, mais comme ça prend un peu de temps et de ressources, je préférerais le voir se lancer juste avant la fermeture de la session.

Je vais approfondir l'utilisation de systemd, mais je n'ai encore rien trouvé pour forcer le lancement avant la fermeture de session.
Il faudrait en fait que mon nouveau service soit dépendant de la session, comment faire ?

Pour ce qui est du "time out" de 90s (modifiable) par défaut, je ne pense pas que mon script dépassera ce temps. Pour l'instant, il ne dépasse pas la minute.
Question robustesse, je pense être bon de ce coté. Comme je l'ai dit plus haut, le script a été testé plusieurs fois (dans des conditions différentes) à l'ouverture de la session. Mais on est à l'abri de rien ! Donc rester méfiant tout de même wink

L'exemple, que tu cites, permet de lancer un script avant l'extinction/reboot/hibernation du PC. Et ça fonctionne, je l'ai testé. Mais le script se lance après la fermeture de la session graphique.

Alors soit, systemd possède déjà tout ce qui est nécessaire et il faut que je trouve la bonne "formule" du service à créer.
Soit il faut que je crée une nouvelle "target" décrivant la fermeture de session. Une sorte de "logout.target" et le script serait lancé avant que cette cible soit atteinte.

Un lien vers un manuel détaillé de systemd serait le bien venu smile

Merci.

Edit: j'ai trouvé un truc plus simple et très intéressant, mais il faudra attendre une mise à niveau de xfce4 car ça concerne la version 4.14 et sous Buster c'est la version 4.12 qui est installée : https://forum.xfce.org/viewtopic.php?pid=62666#p62666

Edit2:
Un autre truc un peu "capilo-tracté" : https://stackoverflow.com/a/55942096

Dernière modification par Tawal (06-06-2021 11:28:03)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#14 06-06-2021 18:31:54

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Pour la doc systemd c’est là : https://www.freedesktop.org/wiki/Software/systemd/ (bon courage…)
Je doute que systemd soit approprié dans ton cas.
La solution du forum xfce.org semble plus simple à mettre en œuvre.
J’ai la version 4.16, l’option déclenchement d’un script au logout est disponible.
Je vais tester cette option avec un script simple et te ferais un retour.

Dernière modification par Philou92 (06-06-2021 18:32:49)


Tousse antique Ovide !

Hors ligne

#15 06-06-2021 21:19:25

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

J’ai testé l’option lancement de script on logout avec le script suivant :

#!/bin/bash
sleep 10
touch /home/moi/plop.txt
exit


La déconnexion me ramène immédiatement sur l’écran de session de lightdm.
Lorsque je me suis connecté à nouveau à ma session au bout de 15s, j’ai constaté que le fichier plop.txt avait bien été créé.
Le script a bien fonctionné.


Tousse antique Ovide !

Hors ligne

#16 06-06-2021 21:39:48

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Philou92 a écrit :

Le script a bien fonctionné.

Je n'en doute pas.
La question, c'est avant ou après la déconnexion ?
Un petit

ps aux | grep xfce4-session > plop.txt

dans le code serait judicieux wink

Merci du retour smile

Dernière modification par Tawal (06-06-2021 21:41:45)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#17 06-06-2021 22:09:06

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Tawal a écrit :

Philou92 a écrit :

Le script a bien fonctionné.

Je n'en doute pas.
La question, c'est avant ou après la déconnexion ?
Un petit

ps aux | grep xfce4-session > plop.txt

dans le code serait judicieux wink

Merci du retour smile


Effectivement, ce n’est pas con big_smile .

#!/bin/bash
sleep 10
ps aux | grep xfce4-session >> /home/moi/plop.txt
exit



Résultat :

moi   51319  0.0  0.0   6196   724 ?        S    22:50   0:00 grep xfce4-session



Réponse pas évidente. Seule la commande a été récupérée comme processus actif.
Je dirais qu’il s’est exécuté à l’intermédiaire entre l’arrêt de la session xfce4 et avant la déconnexion de la session du user.


Tousse antique Ovide !

Hors ligne

#18 06-06-2021 22:15:56

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Oui, j'en ai bien l'impression ...
Du coup, c'est mort pour avoir accès au mode graphique sad

Merci de ton aide.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#19 06-06-2021 22:25:48

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Une solution serait que ce soit ton script qui déclenche la déconnexion.
Genre le bouton de déconnexion en fait ne fait qu’exécuter ton script. Ce dernier une fois terminé déclenche le vrai processus de déconnexion du user.

Tousse antique Ovide !

Hors ligne

#20 06-06-2021 22:48:27

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Oui, on rejoint la solution de https://stackoverflow.com/a/55942096 wink

J'y réfléchis.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#21 06-06-2021 22:50:11

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Philou92 a écrit :

Genre le bouton de déconnexion en fait ne fait qu’exécuter ton script. Ce dernier une fois terminé déclenche le vrai processus de déconnexion du user.

Ça semble plein de bon sens.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#22 07-06-2021 06:52:52

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Plein de bon sens ! Non, il ne me semble pas.

Car cette solution touche a ce qui est installé de base pour Xfce.
Donc ça ne tiendra pas aux mises à jour de l'environnement.

Par contre, la solution qui est proposée sur stackoverflow crée une nouvelle boite de dialogue pour éteindre/déconnecter...
Finalement, il suffit de créer un lanceur, de le placer dans le tableau de bord et enfin enlever le bouton existant.
Du coup, ça reste bien extérieur au système et résiste au mise à jour.

Je vais tenter cela.

Edit:
Ma solution adaptée à mon cas : je n'utilise que "Éteindre" et "Déconnexion" (c'est dû à un souci machine).

#!/bin/bash
PreLogout="$HOME/bin/pre_log_out"

reponse=$(yad --form --title "Log-Out $USER" --width 350 --buttons-layout=spread --button="Éteindre":1 --button="Déconnexion":3; echo $?)
case $reponse in
    1 )
        [ -x  "$PreLogout" ] && "$PreLogout"
        /usr/bin/xfce4-session-logout --fast --halt
        ;;
    3 )
        [ -x  "$PreLogout" ] && "$PreLogout"
        /usr/bin/xfce4-session-logout --fast --logout
        ;;
    * )
        exit 1
        ;;
esac



Edit2: Consolidation du script (protection des variables)

Dernière modification par Tawal (07-06-2021 08:04:06)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#23 07-06-2021 07:43:01

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Bonjour;

Tawal a écrit :

Plein de bon sens ! Non, il ne me semble pas.

Car cette solution touche à ce qui est installé de base pour Xfce.
Donc ça ne tiendra pas aux mises à jour de l'environnement.

Tu penses plus loin que moi ! Bien vu.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#24 07-06-2021 08:11:18

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Il faut encore mettre un peu de beauté à la boite yad big_smile

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#25 07-06-2021 09:33:44

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [Résolu][Contournement] Lancer script juste avant la fermeture session

Hello
ou sinon en tout moche avec dialog lol

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

Pied de page des forums