differenza tra tty [p, r, s] [N] e 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

quando accedo usando SSH ottengo pts / 1 diciamo ma non capisco perché ci sono quei root tty [N]. Da qualche parte su google ho scoperto che è equivalente ai pts ma la seconda domanda, perché due nomi diversi per lo pseudoterminale? E la terza domanda riguarda la parte di comando dell'output di ps, è solo uno pseudoterminale per sh (shell)?

    
posta user3602441 21.10.2014 - 06:18
fonte

1 risposta

1

OS X, come altri sistemi UNIX-iod, implementa due sistemi di pseudo-terminali: il pty sistema e ptmx sistema (i collegamenti sono al sorgente del kernel usato in 10.9.5).

Entrambi offrono in definitiva la stessa funzionalità: lasciano un programma (ad esempio un emulatore di terminale) aperto (il lato master di) uno pseudo-terminale e successivamente avviano altri programmi (ad esempio una shell) che eseguono "in" (il lato slave) di) quello stesso pseudo-terminale.

Il sistema pty è più vecchio. I nodi del dispositivo per i lati master dei suoi pseudo-terminali corrispondono al modello /dev/pty[pqrstuvw][0123456789abcdef] . I lati slave utilizzano nodi corrispondenti denominati con tty ( /dev/tty[pqrstuvw][0123456789abcdef] ). Questi nodi di dispositivo vengono allocati all'avvio del sistema (ovvero sono sempre presenti in /dev/ ).

Il sistema ptmx è più recente e utilizza un singolo nodo del dispositivo master, /dev/ptmx e utilizza /dev/ttys[0-9][0-9][0-9] per i lati slave. I nodi device slave sono allocati dinamicamente (quindi solo i nodi ancora in uso esistono in /dev/ ).

In sostanza, qualsiasi programma che utilizza le API "moderne" dello pseudo-terminale finirà automaticamente per usare pseudo-terminali basati su ptmx. I programmi che utilizzano le interfacce precedenti di pseduo-terminale utilizzeranno pseudo-terminali basati su pty.

Nel tuo caso, quando si generano i figli, il tuo sshd ha usato il nuovo sistema ptmx (o un'interfaccia come openpty che lo utilizza" sotto il cofano "), ma l'antenato pertinente di tali shell di root utilizzava il vecchio sistema pty. Se sei curioso, puoi rintracciare i PID principali (PPID, la terza colonna del tuo output) per trovare il programma antenato che ha generato la linea di processi che ha finito con l'esecuzione di tali shell di root (il trattino principale indica che sono shell di login) .

Inoltre, altri sistemi potrebbero utilizzare variazioni sui nomi dei dispositivi. Alcuni sistemi potrebbero andare oltre lo 0-f per i nomi pty e alcuni sistemi usano /dev/pts/<digits> (cioè in una sottodirectory invece di metterli tutti in /dev e dover usare tre cifre per evitare conflitti con ttys0 - ttys9 nodi slave dal sistema pty).

    
risposta data 21.10.2014 - 10:49
fonte

Leggi altre domande sui tag