OVH Cloud OVH Cloud

Pas d'execution .logout depuis gnome

6 réponses
Avatar
Marc Boyer
Bonjour,

j'ai mon fichier .logout qui s'execute bien quand je me
connecte en mode console, en ssh, mais par quand je
quitte ma sessions Gnome.

Ma .login lui par contre s'exécute correctement.

J'ai une RedHat 9, mon shell est tcsh.

Une idée de piste pour trouver la source du mal ?

Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...

6 réponses

Avatar
Stephane Chazelas
2004-09-2, 08:55(+00), Marc Boyer:
[...]
j'ai mon fichier .logout qui s'execute bien quand je me
connecte en mode console, en ssh, mais par quand je
quitte ma sessions Gnome.

Ma .login lui par contre s'exécute correctement.

J'ai une RedHat 9, mon shell est tcsh.

Une idée de piste pour trouver la source du mal ?
[...]


Xsession ne lance probablement pas un shell de login. Il va
lancer un shell qui source explicitement le .login et lance
la session gnome.

Tu peux modifier le script Xsession pour qu'il source le .logout
apres que la session Gnome soit terminee (s'il ne fait pas de
"exec").

Tu dois pouvoir mettre dans ton .login une instruction qui dit
de lire le .logout quand il se termine. Je ne sais pas si c'est
possible avec tcsh, mais quelle idee, aussi d'utiliser tcsh.

--
Stephane

Avatar
Marc Boyer
Stephane Chazelas wrote:
Xsession ne lance probablement pas un shell de login. Il va
lancer un shell qui source explicitement le .login et lance
la session gnome.


OK, je viens de voir cela.

Tu peux modifier le script Xsession pour qu'il source le .logout
apres que la session Gnome soit terminee (s'il ne fait pas de
"exec").


Sauf que
1) il faudrait être root pour modifier cela
2) en effet, il fait un exec
exec -l $SHELL -c "$SSHAGENT gnome-session"

mais logiquement, -l fait croire au shell que c'est un login, et
$SHELL devrait valoir tcsh...
Ceci dit, la page de man de tcsh dit
-l The shell is a login shell. Applicable only if -l is
the only flag specified.
mais sans pouvoir modifier Xsession, c'est difficile à vérifier.

Tu dois pouvoir mettre dans ton .login une instruction qui dit
de lire le .logout quand il se termine. Je ne sais pas si c'est
possible avec tcsh


Ben, dans la logique tcsh, si on lit le .login, on
lit le .logout, donc, pas besoin d'une telle instruction.
Et je n'ai pas vu de truc genre "atexit".

mais quelle idee, aussi d'utiliser tcsh.


C'est le shell qui était fortement conseillé par les
admins systèmes de mon premier compte Unix (1995), et
j'hésite à en changer, je le connais bien maintenant...

Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...

Avatar
Stephane Chazelas
2004-09-2, 10:10(+00), Marc Boyer:
[...]
2) en effet, il fait un exec
exec -l $SHELL -c "$SSHAGENT gnome-session"


Cet exec n'est pas un probleme, c'est si le shell faisait
exec $SSHAGENT
que ca en serait un (les instructions qui suivraient ne seraient
pas executees).

Regarde si tu ne peux pas utiliser ton propre Xsession
(~/.xsession ?) a la place.

mais logiquement, -l fait croire au shell que c'est un login, et
$SHELL devrait valoir tcsh...


Un shell de login (au moins pour tcsh) est un shell interactif.

Quand je fais

exec - tcsh -c :

(exec - est l'equivalent zsh du exec -l de bash), le .login
n'est pas lu ici.

Ceci dit, la page de man de tcsh dit
-l The shell is a login shell. Applicable only if -l is
the only flag specified.
mais sans pouvoir modifier Xsession, c'est difficile à vérifier.


-l ne peut pas etre utilisé avec -c.

Tu dois pouvoir mettre dans ton .login une instruction qui dit
de lire le .logout quand il se termine. Je ne sais pas si c'est
possible avec tcsh


Ben, dans la logique tcsh, si on lit le .login, on
lit le .logout, donc, pas besoin d'une telle instruction.
Et je n'ai pas vu de truc genre "atexit".


Mais, en l'occurrence, il est probable que le .login soit lu a
la main, pas sur l'initiative de tcsh. Si tu veux qu'il lise le
.login, il faudra le lui dire aussi.


mais quelle idee, aussi d'utiliser tcsh.


C'est le shell qui était fortement conseillé par les
admins systèmes de mon premier compte Unix (1995), et
j'hésite à en changer, je le connais bien maintenant...
[...]


Tant que tu es content avec...

--
Stephane


Avatar
Laurent Wacrenier
Marc Boyer écrit:
Sauf que
1) il faudrait être root pour modifier cela
2) en effet, il fait un exec
exec -l $SHELL -c "$SSHAGENT gnome-session"

mais logiquement, -l fait croire au shell que c'est un login, et
$SHELL devrait valoir tcsh...
Ceci dit, la page de man de tcsh dit
-l The shell is a login shell. Applicable only if -l is
the only flag specified.
mais sans pouvoir modifier Xsession, c'est difficile à vérifier.


Édite ton .xsession avec :

#! /usr/local/bin/tcsh -l
$SSHAGENT gnome-session

Puis rend le executable (chmod +x .xsession)

Avatar
Marc Boyer
Stephane Chazelas wrote:
2004-09-2, 10:10(+00), Marc Boyer:
[...]
2) en effet, il fait un exec
exec -l $SHELL -c "$SSHAGENT gnome-session"


Cet exec n'est pas un probleme, c'est si le shell faisait
exec $SSHAGENT que ca en serait un (les instructions qui
suivraient ne seraient pas executees).


En lisant la partie exec du man de bash, je ne vois
pas d'ou viens la nuance.

Regarde si tu ne peux pas utiliser ton propre Xsession
(~/.xsession ?) a la place.


Je vais regarder cela. Mais le problème c'est que je travaille
avec des Sun/Solaris et des PC/Linux, et j'aimais bien pouvoir
me reposer sur la config X locale, parfois en console, parfois
sous X, et que j'aimais bien ne gérer que le shell.

mais logiquement, -l fait croire au shell que c'est un login, et
$SHELL devrait valoir tcsh...


Un shell de login (au moins pour tcsh) est un shell interactif.

Quand je fais

exec - tcsh -c :

(exec - est l'equivalent zsh du exec -l de bash), le .login
n'est pas lu ici.


OK

Tu dois pouvoir mettre dans ton .login une instruction qui dit
de lire le .logout quand il se termine. Je ne sais pas si c'est
possible avec tcsh


Ben, dans la logique tcsh, si on lit le .login, on
lit le .logout, donc, pas besoin d'une telle instruction.
Et je n'ai pas vu de truc genre "atexit".


Mais, en l'occurrence, il est probable que le .login soit lu a
la main, pas sur l'initiative de tcsh. Si tu veux qu'il lise le
.login, il faudra le lui dire aussi.


Mais je vois rien dans le Xsession qui parle de .login,
donc, ce serait gnome qui ferait ça (d'autant plus que je vois
les traces de mon .login dans le .session-error).

Je vais tenter de voir qui exécute .login avec un
ps -u | grep $$

mais quelle idee, aussi d'utiliser tcsh.


C'est le shell qui était fortement conseillé par les
admins systèmes de mon premier compte Unix (1995), et
j'hésite à en changer, je le connais bien maintenant...
[...]


Tant que tu es content avec...


Je me suis pas penché sérieusement sur la concurence.
Jusqu'à présent, ça allait.

Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...



Avatar
Marc Boyer
Stephane Chazelas wrote:
Ben, dans la logique tcsh, si on lit le .login, on
lit le .logout, donc, pas besoin d'une telle instruction.
Et je n'ai pas vu de truc genre "atexit".


Mais, en l'occurrence, il est probable que le .login soit lu a
la main, pas sur l'initiative de tcsh. Si tu veux qu'il lise le
.login, il faudra le lui dire aussi.


Oui, mais ce qui me desole et me fait du chagrin,
quand je regarde mon .xsession-errors, c'est que j'y
trouve

execution .login par 24054
$0 = -/bin/tcsh
$* 24054 ? 00:00:00 tcsh

ce qui, comme mon .login commence par

echo "execution .login par "$$
echo $0 = $0
echo $* = $*
ps -u mboyer | grep $$

laisse supposer que c'est bien un tcsh qui lit le
.login, ne lit pas le .logout, et que c'est par celui
lance par le exec du Xsession

Je vais tenter de faire mon propre .xsession pour
voir si je peux avancer dans la recherche de l'origine
du bug.

Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...