"Marc Lefranc" <[EMAIL PROTECTED]> wrote: > Pierre Crescenzo <[EMAIL PROTECTED]> wrote : > > Salut, > > J'ai remarqu� que les commandes telles "w", "finger", "who" ou "users" > > oublient r�guli�rement, sur ma machine, de me signaler des > > utilisateurs pourtant bel et bien connect�s. Est-ce normal ? Je > > pr�cise que je ne vois cela que pour des personnes connect�es depuis > > un terminal externe (avec une banni�re xdm). > > J'avais d�j� remarqu� cela sous HP-UX, et �a a l'air d'�tre la m�me > chose sous Linux. > Les utilisateurs logu�s via xdm n'apparaissent que si ils ont un > �mulateur de terminal ouvert. S'ils se contentent de lancer une > application graphique depuis l'environnement, ils sont invisibles. > > Je suppose que pour construire la liste des connect�s le syst�me se > base sur la liste des terminaux et pseudo-terminaux en activit�. Par > contre, la commande last contient une trace du login. J'ai > l'impression que tout cela date du temps o� 1 utilisateur = 1 terminal.
Ce n'est pas g�n�ral � tous les syst�mes Unix. En fait le serveur xdm devrait lors de la connexion cr�er un enregistrement de la connexion dans wtmp, mentionnant l'origine de la connexion sur le syst�me, de la m�me fa�on que le fait la commande login ex�cut�e pour traiter les connexions depuis un terminal physique (port s�rie, console ou autre), ou virtuel (pseuto-terminal allou� par les serveurs de connexion tels que rlogind, et rshd). Rappelons tout de m�me que wtmp est un fichier journal contenant des enregistrements binaires sur les �v�nements relatifs � la s�curit� du syst�me, et il trace en particulier les connexions, mais aussi Une fois sur le syst�me, il n'y a pas beaucoup d'int�r�t qu'ont les �mulateurs de terminal lanc�s depuis un shell d'un utilisateur d�j� connect� ou depuis un menu ou une interface graphique (ex�cut�e automatiquement lors de la cr�ation de la session X), d'ajouter des entr�es dans wtmp, m�me si ces �mulateurs de terminaux (par exemple xterm, dtterm, hpterm, openterm, kdterm...) doivent allouer un pseudo-terminal de controle leur permettant d'ex�cuter un shell: en effet, ce sous-shell n'est pas un nouveau login, puisque cela reprend la m�me connexion que la session X connect�e par XDM). N�anmoins il faut bien voir que ces processus suppl�mentaires peuvent �tre cr��s de fa�on d�tach�e ou �tre d�tach�s du processus initial, et que le terminal utilis� lors de la connexion peut tr�s bien ne plus �tre l� alors que d'autres pseudo-terminaux sont toujours actifs pour la m�me connexion. Aussi certains syst�mes Unix ont introduit la notion de "Terminal Group", similaire � la notion de "Process Group" permettant de regrouper les processus ensembles dans le cas de la transmission des signaux. Le Terminal Group a comme nom l'un des terminaux pr�sents dans le groupe, et la connexion utilisateur est attach�e non pas � un terminal mais � ce groupe de terminaux. Ce syst�me permet alors d'avoir un suivi plus exact des utilisateurs. Mais sur la plupart des syst�mes, cette notion a �t� d�tourn�e ou simplifi�e: le terminal group permet d'attacher un lien de parent� entre des terminaux fils et un pseudo-terminal li� � la connexion, mais qui ne sera pas d�truit quand le processus de connexion auquel il est li� sera termin�. Tous les autres pseudos-terminaux sont alors des fils de ce pseudo-terminal, et les processus attach�s � ces pseudo-terminaux suppl�mentaires n'ont pas besoin d'inscrire un enregistrement dans wtmp (la seule indication du terminal attach� � chaque processus dans la table des processus suffit, cet attachement �tant h�rit� lors de la cr�ation de processus fils). D'autre part, chaque terminal ou pseudo-terminal dans la liste des terminaux contient alors l'attachement au terminal group auquel il appartient. Ce syst�me permet alors de simplifier l'administration des processus li�s � une m�me connexion, �vite de polluer wtmp, augmente les performances des syst�mes servant simultan�ment de nombreux utilisateurs, par exemple les grappes de serveurs avec syst�me de haute disponibilit�, qui �mulent une machine unique avec de nombreux processeurs ind�pendants: les processus sont r�partis sur des machines diff�rentes qui communiquent efficacement par des r�seaux rapides � bande passante �lev�e (liaisons de plusieurs gigabits/s, par bus optique ou Fast-Ethernet ou SCSI), et les terminaux sont servis par un ou plusieurs serveurs frontaux qui g�rent les groupes de terminaux, le shell �tant l'un des processus tournant sur les grappes de serveurs, et d�pla�able d'un processeur � l'autre sous le contr�le du syst�me de m�moire/machine virtuelle (capable de faire des �changes de m�moire virtuelle non seulement sur disque mais aussi de m�moire � m�moire par les liaisons rapides g�rant aussi un cache de pages m�moire d�j� �chang�es, le swap sur disque SCSI ou sur un rack m�moire SCSI venant en dernier recours). A ce sujet, je n'ai pas trop regard� dans le d�tail la s�mantique des terminaux dans Linux particuli�rement dans l'optique du d�veloppement de la haute disponibilit� sous Linux, de fa�on comparable pour l'instant � IBM HACMP (sous AiX), HP ServiceGuard (sous HP-UX) voire Microsoft Cluster Server (sous Windows NT), mais avec des fonctionnalit�s int�ressantes � d�velopper telles que la reprise des processus en cours sur un autre processeur non d�faillant ou moins charg�, qui oblige � une gymnastique sp�ciale pour r�affecter les processus et terminaux qui y sont attach�s si l'optique est de conserver la session utilisateur connect�e.

