1 votos

Diferencia entre tty[p,r,s][N] y 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

cuando inicio sesión usando SSH obtengo pts/1, pero no entiendo por qué aparecen esas root ttys[N]. En algún lugar de Google encontré que es equivalente a pts, pero la segunda pregunta, ¿por qué dos nombres diferentes para el pseudoterminal? Y la tercera pregunta es sobre la parte del comando de la salida de ps, ¿es simplemente un pseudoterminal para sh (shell)?

1voto

Nip Puntos 362

OS X, al igual que otros sistemas UNIX, implementa dos sistemas de pseudo-terminales: el sistema pty y el sistema ptmx (los enlaces apuntan al código fuente del kernel utilizado en la versión 10.9.5).

Ambos sistemas ofrecen en última instancia la misma funcionalidad: permiten que un programa (por ejemplo, un emulador de terminal) abra (el lado maestro de) un pseudo-terminal y posteriormente inicie otros programas (por ejemplo, un shell) que se ejecuten "dentro" (el lado esclavo de) ese mismo pseudo-terminal.

El sistema pty es más antiguo. Los nodos de dispositivos para los lados maestros de sus pseudo-terminales siguen el patrón /dev/pty[pqrstuvw][0123456789abcdef]. Los lados esclavos utilizan nodos correspondientes nombrados con tty (/dev/tty[pqrstuvw][0123456789abcdef]). Estos nodos de dispositivos se asignan cuando el sistema se inicia (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 utiliza /dev/ttys[0-9][0-9][0-9] para los lados esclavos. Los nodos de dispositivos esclavos se asignan de forma dinámica (por lo tanto, solo existen los nodos que todavía están en uso en /dev/).

Básicamente, cualquier programa que utilice las API de pseudo-terminales "modernas" terminará utilizando pseudo-terminales basados en ptmx. Los programas que utilizan las interfaces más antiguas de pseudo-terminales utilizarán pseudo-terminales basados en pty.


En tu caso, al generar sus procesos hijos, tu sshd utilizó el sistema ptmx más nuevo (o una interfaz como openpty que lo utiliza "bajo el capó"), pero el ancestro pertinente de esos shells root utilizó el antiguo sistema pty. Si tienes curiosidad, podrías rastrear los PID de los padres (PPID, la tercera columna en tu resultado) para encontrar el programa ancestro que generó la línea de procesos que acabaron ejecutando esos shells root (el guion al principio indica que son shells de inicio de sesión).

Además, otros sistemas pueden utilizar variaciones en los nombres de dispositivos. Algunos sistemas podrían ir más allá de 0- f para los nombres de pty, y algunos sistemas utilizan /dev/pts/ (es decir, en un subdirectorio en lugar de colocarlos todos en /dev y tener que utilizar tres dígitos para evitar conflictos con los nodos esclavos ttys0 - ttys9 del sistema pty).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X