diferencia entre tty [p, r, s] [N] y pts

1
$ 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

cuando inicio sesión con SSH obtengo pts / 1, digamos, pero no entiendo por qué existen esos ttys de raíz [N]. En algún lugar de google encontré que es equivalente a pts, pero la segunda pregunta es: ¿por qué dos nombres diferentes para pseudoterminal? Y la tercera pregunta es para la parte del comando de la salida ps, ¿es solo un pseudoterminal para sh (shell)?

    
pregunta user3602441 21.10.2014 - 06:18

1 respuesta

1

OS X, al igual que otros sistemas UNIX-iod, implementa dos sistemas de pseudo-terminales: el pty y el sistema sistema ptmx (los enlaces son a la fuente del kernel utilizada en 10.9.5).

Ambos, en última instancia, ofrecen la misma funcionalidad: dejan que un programa (por ejemplo, un emulador de terminal) abra (el lado maestro de) un pseudo-terminal y luego inicien otros programas (por ejemplo, un shell) ejecutándose "en" (el lado esclavo de) ese mismo pseudo-terminal.

El sistema pty es más antiguo. Los nodos de dispositivo para los lados maestros de sus pseudo-terminales coinciden con el patrón /dev/pty[pqrstuvw][0123456789abcdef] . Los lados esclavos usan los nodos correspondientes nombrados con tty ( /dev/tty[pqrstuvw][0123456789abcdef] ). Estos nodos de dispositivo se asignan cuando se inicia el sistema (es decir, siempre están presentes en /dev/ ).

El sistema ptmx es más nuevo y utiliza un único nodo de dispositivo maestro, /dev/ptmx , y usa /dev/ttys[0-9][0-9][0-9] para los lados esclavos. Los nodos de dispositivo esclavos se asignan dinámicamente (por lo tanto, solo los nodos que todavía están en uso existen en /dev/ ).

Básicamente, cualquier programa que use las API pseudo-terminales "modernas" terminará automáticamente usando pseudo-terminales basadas en ptmx. Los programas que utilizan las interfaces pseduo-terminales más antiguas utilizarán pseudo-terminales basadas en pty.

En su caso, al generar sus hijos, su sshd usó el nuevo sistema ptmx (o una interfaz como openpty que la usa" bajo el capó "), pero el ancestro pertinente de esas cáscaras de raíz utilizó la antigua sistema pty Si tiene curiosidad, puede rastrear los PID principales (PPID, la tercera columna en su salida) para encontrar el programa ancestral que generó la línea de procesos que terminaron ejecutando esos shells de raíz (el primer guión indica que son shells de inicio de sesión) .

Además, otros sistemas pueden usar variaciones en los nombres de dispositivos. Algunos sistemas pueden ir más allá de 0 – f para los nombres pty, y algunos sistemas usan /dev/pts/<digits> (es decir, en un subdirectorio en lugar de ponerlos todos en /dev y tener que usar tres dígitos para evitar conflictos con el ttys0 - ttys9 nodos esclavos del sistema pty).

    
respondido por el Chris Johnsen 21.10.2014 - 10:49

Lea otras preguntas en las etiquetas