Lenteur perceptible à la fermeture d'un terminal loggué sous root

Salut, Je tourne sous buster / xfce4.

Alors, qu’on soit bien d’accord, il ne s’agit pas d’une panne, mais voilà ce que j’ai constaté :

Si j’ouvre un terminal en user simple et que je ferme la fenêtre, rien à constater.

Si j’ouvre un terminal, que je me loggue en root et que je ferme la fenêtre, là je constate une latence lors de la fermeture de la fenêtre.

Question : est-ce normal ?

Comment ? Avec le menu Applications (la petite souris) puis émulateur de Terminal ?

Comment ? En tapant

su -
sudo bash
# autre
command -p sudo bash

Pourriez-vous préciser exactement comment vous procédez pour fermer la fenêtre ? C’est là le point essentiel.

Je suppose que vous vous précipitez pour attraper la souris et faites un exercice inutile de contrôle des mouvements de la main pour bien viser le coin supérieur droit de la fenêtre et cliquer précisément sur la croix qui s’est mise à rougir.

Si vous procédez comme je l’ai indiqué ci-dessus la réponse est oui :joy:

Et pourquoi donc ? Parce que avec xfce4, vous pouvez ouvrir plusieurs fenêtres émulateur de Terminal, éventuellement avec plusieurs onglets, il n’y aura qu’un seul processus xfce4-terminal

fp2@debpacha:/tmp$ pstree -a -G 4980
xfce4-terminal --zoom=1 --hide-menubar --hide-toolbar
  ├─bash
  │   └─watch --interval 30 ./wbattr
  ├─bash
  ├─bash
  ├─bash
  ├─bash
  ├─bash
  │   └─man pstree
  │       └─pager
  ├─bash
  │   └─pstree -a -G 4980
  ├─{gdbus}
  └─{gmain}
fp2@debpacha:/tmp$ 
fp2@debpacha:/tmp$ ps -edf | fgrep terminal
fp2       4284 30356  0 23:16 pts/6    00:00:00 grep -F --color=auto terminal
fp2       4980  2922  0 14:14 ?        00:00:12 xfce4-terminal --zoom=1 --hide-menubar --hide-toolbar
fp2@debpacha:/tmp$ 

Dans cette sortie je reconnais les cinq onglets d’une fenêtre dans ‘Espace de travail 1’ et deux fenêtres dans ‘Espace de Travail 2’, une fenêtre pour retrouver les options de pstree et une autre fenêtre dans laquelle j’ai tapé mes commandes pstree et ps ....
Si maintenant je veux fermer la fenêtre qui affiche man pstree, comme elle est recouverte par la fenêtre Firefox je ne vais pas perdre mon temps à mettre Firefox en icône, sélectionner le bon terminal,… je bascule via Alt Tab pour qu’elle apparaisse au premier plan, j’appuie sur ‘q’ pour quitter la commande man et sur Ctrl D (ou ‘exit’) pour mettre fin proprement le shell interactif ce qui fait disparaître ipso facto la fenêtre.
Si je relance un pstree j’ai une entrée bash en moins.

Maintenant, dans votre cas, on a un seul terminal qui contient un bash interactif de l’utilisateur uid=1000, lequel shell est le père d’un autre shell interactif de root uid=0.
On pourrait avoir deux sources de latence possible dans votre manière de procéder

  • En cliquant sur la croix, le signal de fermeture n’est pas envoyé au bon processus interactif
  • quand les shells sont fermés, faire disparaître la fenêtre et éventuellement arrêter le processus xfce4-terminal qui n’a plus de raison d’être (étape sans vraie latence à mon avis).

En résumé : il suffit de procéder logiquement à la fermeture des shells empilés dans la fenêtre
Si l’invite est du genre root@machine:..# Ctrl D affiche # exit
L’invite devient utilisateur@machine:...$ Ctrl D ferme le shell et la fenêtre.

Conclusion : on utilise le clavier, c’est plus rapide, plus simple et plus logique.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac

Mon test était basé sur la manipulation suivante :

  • j’ouvre une fenêtre xfce4-terminal
  • je me loggue en root avec su -
  • je ferme la fenêtre avec le pointeur de la souris (car souvent je ferme tous les autres fenêtres dans la foulée)

Je sais bien que j’ai été un peu long dans mes explications.

Je suppose que maintenant vous avez compris pourquoi en fermant à la souris une fenêtre terminal, vous faites disparaître toutes les fenêtres Terminal car vous donnez le signal d’arrêter le seul processus xfce4-terminal qui gère toutes les fenêtres et onglets de ce type.

On peut à la limite considérer que ce choix d’implémentation est discutable du point de vue ergonomique car si dans un espace de travail vous ouvrez un terminal puis après avoir passé une ou deux commandes vous décidez que vous n’avez plus besoin de ce terminal, vous fermez avec un clic sur la croix de fermeture vous envoyez ad patres tous les autres terminaux dans tous les espaces de travail (que par définition vous ne voyez pas sur votre espace de travail actuel). C’est limite du grand n’importe quoi.

Pour l’histoire de la latence, il faudrait creuser plus avant mais c’est vraisemblablement parce-que un shell interactif avec uid=0 (root) n’apprécie pas vraiment de voir son processus parent disparaître sans crier gare (le shell dans lequel vous avez tapé su - et qui a donné naissance au shell root en question ).

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

Gnome à la courtoisie d’avertir

su - pour passer root puis clic pour fermer la fenêtre

Capture%20d%E2%80%99%C3%A9cran%20du%202019-10-24%2014-32-39

Pour le choix du mot courtoisie vous avez mon approbation et celle de Boileau :smiley:
Et après essai de ma part, nous avons effectivement un bug de xfce4-terminal
Je crée une fenêtre pour lancer des commandes privilégiées

fp2@debpacha:~$ pstree -a -G 4642
xfce4-terminal --zoom=1 --hide-menubar --hide-toolbar
  ├─bash
  │   └─watch --interval 30 ./wbattr
  ├─bash
  ├─bash
  ├─bash
  ├─bash
  │   └─pstree -a -G 4642
  ├─bash
  ├─bash
  │   └─sudo bash
  │       └─bash
  ├─{gdbus}
  └─{gmain}
fp2@debpacha:~$ 

Je lance mes commandes et je ferme la fenêtre en cliquant sur la croix : la fenêtre disparaît immédiatement (sans demande de confirmation, et testé aussi avec une commande watch dans le terminal )

fp2@debpacha:~$ pstree -a -G 4642
xfce4-terminal --zoom=1 --hide-menubar --hide-toolbar
  ├─bash
  │   └─watch --interval 30 ./wbattr
  ├─bash
  ├─bash
  ├─bash
  ├─bash
  │   └─pstree -a -G 4642
  ├─bash
  ├─{gdbus}
  └─{gmain}
fp2@debpacha:~$ 

Et une entrée bash -> sudo bash _> bash en moins ! (la fenêtre ou l’onglet associé aussi)

Par contre mon histoire de sans crier gare de faire disparaître des terminaux dans un autre espace de travail ce n’est heureusement pas le cas Dieu Merci !

Comme j’ai pris l’habitude d’être bête et discipliné et de fermer méthodiquement chaque onglet/fenêtre je n’utilise en pratique jamais le clic de souris sur la croix pour fermer une fenêtre.
Pour les onglets d’un terminal Ctrl D
Pour les onglets de Firefox Ctrl W
Pour les onglets de elinks c (close)

La logique de l’empilement des programmes et interpréteurs de commandes me convient, par exemple

ssh utilisateur@serveur
tmux attach -t 0

Je retrouve ma session (texte)
Quand j’ai terminé

#  sortie de tmux
<Prefix>D
#  sortie du shell de connexion
Ctrl D

Avec = Ctrl B par défaut, mais que j’ai paramétré à Ctrl A comme pour screen

Je n’utilise quasiment jamais l’explorateur de fichiers Thunar (d’ailleurs c’est seulement maintenant que c’est lui qui gère les raccourcis .desktop sur le Bureau) et je préfère largement pour visualiser un pdf Avis_de_taxe_d_habitationxxxx.pdf me rendre via cd dans le répertoires des impôts et copier dans le presse papier le nom exact du fichier que je veux visualiser (ls -lt | head ou autre) et de lancer

xdg-open <lefichier>
#  ou
zathura <lefichier>

La partie est remplie par l’ordinateur raccourci Shift Ctrl V
L’avantage de zathura c’est que pour ajuster le zoom, je n’ai pas besoin de la souris, les touches ‘+’ et ‘-’ fonctionnent (et même les flèches pour se déplacer) et la sortie c(est ‘q’ (quit). C’est nettement plus rapide que le evince lancé par défaut

fp2@debpacha:/data/docs/impots$ xdg-open Avis_de_taxe_d_habitation_CAP_2019.pdf
fp2@debpacha:/data/docs/impots$ 
(evince:11281): Gtk-WARNING **: Allocating size to EvSidebar 0x556a098f0520 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

fp2@debpacha:/data/docs/impots$ 

Au moins, avec zathura il n’y a pas de messages d’avertissements ou d’erreurs qui viennent polluer le terminal.

Ce message vous est proposé dans le cadre d’une campagne de promotion de l’utilisation de la ligne de commandes, des applications qui se pilotent au clavier et de la lecture des pages de manuel.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« Ce que l’on conçoit bien s’énonce clairement,
Et les mots pour le dire arrivent aisément. »
Boileau De L’Art poétique (Chant I)

Je pense aussi.

Toutefois, merci beaucoup pour le partage de toutes ces explications. C’est cool de voir des passionnés s’investir dans nos interrogations qui ne sont pas forcément prioritaires. :+1: