1 votes

différence entre tty [p,r,s][N] et pts

$ ps -ef | grep tty | grep root | grep "-sh"
root 25185 25184  0  Oct 14  ttyp4     0:00 -sh
root 22998 22997  0  Oct 14  ttyp2     0:00 -sh
root 25379 25378  0  Oct 13  ttyp0     0:00 -sh
root  1709  1708  0  Oct 13  ttyrf     0:00 -sh
root 27558 27552  0  Oct 14  ttyp5     0:00 -sh
root 28955 28954  0  Oct  1  ttys5     0:00 -sh
root 12124 12123  0  Oct 13  ttyq9     0:00 -sh
root 16255 16254  0  Oct  8  ttys8     0:00 -sh
root 13731 13729  0  Oct 13  ttyq1     0:00 -sh
root 24695 24694  0  Oct  8  ttys9     0:00 -sh
root 26969 26968  0  Oct  7  ttys7     0:00 -sh
root  3625  3624  0  Oct 15  ttyp6     0:00 -sh
root 22387 22385  0  Oct 13  ttys0     0:00 -sh
root  7946  7945  0  Oct  8  ttysb     0:00 -sh
root  1071  1070  0  Oct  1  ttys6     0:00 -sh

quand je me connecte en utilisant SSH j'obtiens pts/1 disonsmais je ne comprends pas pourquoi il y a ces Root ttys [N]. Quelque part sur google j'ai trouvé que c'est équivalent à pts mais la deuxième question, pourquoi deux noms différents pour le pseudo terminal ? Et la troisième question concerne la partie commande de la sortie ps, s'agit-il simplement d'un pseudo-terminal pour sh (shell) ?

3voto

Nip Points 362

OS X, comme d'autres systèmes UNIX-iod, implémente deux systèmes de pseudo-terminaux : le pty et le ptmx (les liens sont vers les sources du noyau utilisé dans 10.9.5).

Ils offrent tous deux la même fonctionnalité : ils permettent à un programme (par exemple, un émulateur de terminal) d'ouvrir (le côté maître) un pseudo-terminal et de lancer ensuite d'autres programmes (par exemple, un shell) qui s'exécutent "dans" (le côté esclave) ce même pseudo-terminal.

Le système pty est plus ancien. Les nœuds de périphériques pour les côtés maîtres de ses pseudo-terminaux correspondent au schéma suivant /dev/pty[pqrstuvw][0123456789abcdef] . Les côtés esclaves utilisent les nœuds correspondants nommés avec tty ( /dev/tty[pqrstuvw][0123456789abcdef] ). Ces nœuds de périphériques sont alloués au démarrage du système (c'est-à-dire qu'ils sont toujours présents dans /dev/ ).

Le système ptmx est plus récent et utilise un seul nœud de dispositif maître, /dev/ptmx et utilise /dev/ttys[0-9][0-9][0-9] pour les côtés esclaves. Les nœuds de dispositif des esclaves sont alloués de manière dynamique (ainsi, seuls les nœuds encore utilisés existent dans la base de données des esclaves). /dev/ ).

Fondamentalement, tout programme qui utilise les API de pseudo-terminaux "modernes" finira automatiquement par utiliser des pseudo-terminaux basés sur Ptmx. Les programmes utilisant les anciennes interfaces pseduo-terminales utiliseront des pseudo-terminaux basés sur pty.


Dans votre cas, lors de la création de ses enfants, vos sshd utilisait le nouveau système ptmx (ou une interface comme openpty qui l'utilise "sous le capot"), mais l'ancêtre pertinent de ces shells Root utilisait l'ancien système pty. Si vous êtes curieux, vous pouvez suivre les PIDs parents (PPID, la troisième colonne de votre sortie) pour trouver le programme ancêtre qui a engendré la ligne de processus qui a fini par exécuter ces shells Root (le trait d'union indique que ce sont des shells de connexion).

En outre, d'autres systèmes peuvent utiliser des variantes des noms de périphériques. Certains systèmes peuvent aller au-delà de 0-f pour les noms de pty, et certains systèmes utilisent /dev/pts/<digits> (c'est-à-dire dans un sous-répertoire au lieu de les mettre tous dans /dev et de devoir utiliser trois chiffres pour ne pas entrer en conflit avec les ttys0 - ttys9 les nœuds esclaves du système pty).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X