O que se entende por pts / 0 e pts / 1 na saída de ps -aux?

0

Estou lendo o livro Unix Power Tools e me deparei com o comando ps. A saída do comando ps x , conforme indicado no livro, é:

PID   TTY STAT TIME COMMAND
18034 tty2 S 0:00 -zsh
18059 ?    S 0:01 ssh-agent
18088 tty2 S 0:00 sh /usr/X11R6/bin/startx
18096 tty2 S 0:00 xinit /etc/X11/xinit/xinitrc -- :0 -auth /home/jpeek/
18101 tty2 S 0:00 /usr/bin/gnome-session
18123 tty2 S 0:33 enlightenment -clientId default2
18127 tty2 S 0:01 magicdev --sm-client-id=default12
18141 tty2 S 0:03 panel --sm-client-id default8
18145 tty2 S 0:01 gmc --sm-client-id default10
18166 ? S 1:20 gnomepager_applet --activate-goad-server gnomepager_a
18172 tty2 S 0:01 gnome-terminal
18174 tty2 S 0:00 gnome-pty-helper
18175 pts/0 S 0:00 zsh
18202 tty2 S 0:49 gnome-terminal
18203 tty2 S 0:00 gnome-pty-helper
18204 pts/1 S 0:01 zsh
18427 pts/1 T 0:00 man zshjp
18428 pts/1 T 0:00 sh -c /bin/gunzip -c /home/jpeek/.man/cat1/zshjp.1.gz
18430 pts/1 T 0:03 /usr/bin/less -is
18914 pts/1 T 0:02 vi upt3_changes.html
1263 pts/1 T 0:00 vi urls.html
1511 pts/1 T 0:00 less coding
3363 pts/1 S 0:00 vi 1007.sgm
4844 tty2 S 0:24 /usr/lib/netscape/netscape-communicator -irix-session
4860 tty2 S 0:00 (dns helper)
5055 pts/1 R 0:00 ps x

Alguém pode ajudar a decodificar essa saída? O que se entende por pts / 0 e pts / 1?

  1. Tudo que eu pude encontrar foi que pts significa "pseudo terminal escravo", mas não conseguia entender a diferença atrás de pts / 0 e pts / 1.
  2. Por que existe um "?" na coluna TTY? Por que a tty é desconhecida para esse processo?
  3. Qual é o significado de vários aplicativos do Gnome, como "gnome-pty-helper" e "gnomepager_applet"?

Muito obrigado.

    
por Ayush Goyal 26.03.2018 / 17:55

2 respostas

3

  1. São instâncias diferentes de um pseudo-terminal. Por exemplo. eles são guias diferentes em uma janela do Terminal.
  2. Não há TTY. Este processo foi separado do tty. Usando o TIOCNOTTY ioctl () ou setsid (). Isso é feito tradicionalmente para se tornar um processo em segundo plano, o a.k.a. "daemon", que não será automaticamente eliminado pelo SIGHUP ao sair de um terminal. (Se for um processo do gnome como neste exemplo, provavelmente será esperado que seja encerrado por algum outro mecanismo).

    Alternativamente, pode nunca ter tido um TTY para começar, como nos processos iniciados para um serviço systemd , por exemplo.

por 26.03.2018 / 18:07
2

De volta aos dias, os terminais eram dispositivos físicos conectados a uma porta serial cada. Eles aparecem no UNIX como "arquivos de dispositivos" em /dev .

Você está executando o Linux, pela aparência de sua saída e, portanto, existem dois tipos diferentes de terminal 'virtual'. O primeiro conjunto é aquele conectado através do seu monitor. O Linux cria um monte deles, e você pode alternar entre eles usando Ctrl + Alt + Fn . Estes são tty0 , tty1 , etc.

Depois, há o conceito de um pseudo-terminal . Uma é necessária para cada sessão de ssh que você usa para se conectar ao seu sistema, e uma para cada sessão de terminal do X (Gnome). Estes são os nomes 'pts / n'. Pesquise por "pseudo terminal" para saber mais.

Assim, a saída acima me diz que: sua sessão gráfica está vinculada ao segundo terminal virtual ( Ctrl + Alt + F2 ). Você tem dois terminais gnome, pts/0 e pts/1 .

Tente abrir um novo VT usando Ctrl + Alt + F1 e faça o login nele, e repita nos terminais 3 e 4. Sempre que você fizer isso ps -ef mostrará os processos em execução com esse terminal .

Os processos em segundo plano não possuem um terminal conectado e mostrarão ? na coluna TTY.

    
por 26.03.2018 / 18:09

Tags