ps -aux 输出中的 pts/0 和 pts/1 是什么意思?

Ayu*_*yal 4 gnome ps tty

我正在阅读 Unix Power Tools 一书,并遇到了 ps 命令。ps x书中给出的命令输出是:

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
Run Code Online (Sandbox Code Playgroud)

有人可以帮助解码这个输出吗?pts/0 和 pts/1 是什么意思?

  1. 我只能找到 pts 代表“伪终端奴隶”,但无法理解 pts/0 和 pts/1 背后的区别。
  2. 为什么会有“?” 在 TTY 列中?为什么该过程的 tty 未知?
  3. “gnome-pty-helper”和“gnomepager_applet”等各种 Gnome 应用程序的含义是什么?

非常感谢。

sou*_*edi 5

  1. 它们是伪终端的不同实例。例如,它们是终端窗口中的不同选项卡。
  2. 没有 TTY。这个过程已经脱离了 tty。使用 TIOCNOTTY ioctl() 或 setsid()。传统上这样做是为了成为一个后台进程,又名“守护进程”,当从终端注销时,它不会被 SIGHUP 自动杀死。(如果它是本例中的 gnome 进程,则它可能会被其他某种机制终止)。

    或者,它可能从来没有开始使用 TTY systemd,例如为服务启动的进程。


小智 5

过去,终端是连接到串行端口的物理设备。这些在 UNIX 中显示为/dev.

从输出的外观来看,您正在运行 Linux,因此有两种不同类型的“虚拟”终端。第一组是通过显示器连接的。Linux 创建了一堆它们,您可以使用Ctrl+Alt+Fn在它们之间切换。这些是tty0, tty1, 等等。

然后就是伪终端的概念。ssh用于连接到系统的每个会话都需要一个,每个 (Gnome) X 终端会话也需要一个。这些是“pts/n”名称。搜索“伪终端”以了解更多信息。

因此,上面的输出告诉我:您的图形会话与第二个虚拟终端( Ctrl+Alt+F2 )相关联。您有两个 gnome 终端,pts/0并且pts/1.

尝试使用Ctrl+Alt+F1打开一个新的 VT并登录,然后在终端 3 和 4 上重复。每次执行此ps -ef操作都会显示该终端正在运行的进程。

后台进程没有附加终端,并将显示?在 TTY 列中。