命令的返回值who
将始终包含root :0
在 X Window pts 中。我想这实际上意味着 GNOME 登录。我对吗?
另一个问题是从哪里获得这些知识,因为我在 中没有看到它man who
,在info who
.
例子
[root@localhost root]# who
root :0 Sep 11 06:33
root pts/0 Sep 11 06:36 (:0.0)
答案1
参见info who
(who
的 Stallman 域)
如果没有给出非选项参数,“who”将打印当前登录的每个用户的以下信息:登录名、终端线路、登录时间和远程主机名或 X 显示。
这是 X 显示编号(也可能是屏幕编号,例如 0:0)
不过,它不包含任何root
适用于我的伪终端 X windows 的内容。如果您以 登录root
,从安全角度来看这可能很糟糕。
更新:
显示和屏幕是X windows系统的逻辑概念。当我在这里说“屏幕”或“显示器”时,我指的是 X windows 屏幕或显示器,而不是任何物理设备(who
也指 X windows 显示器和屏幕)。
显示的要点是您的计算机可能同时运行多个 X 服务器实例,那么它们被称为在不同的显示器上运行。例如,您的正常图形环境可以由位于 display:0 的 X 服务器实例 1 显示,并且您还可能有一个远程桌面应用程序,例如Xephyr
或Xnest
在 display:1 处启动另一个 X 服务器实例并输出到单个窗口:请参阅https://superuser.com/questions/363988/display-remote-x-session-complete-desktop-in-one-client-x-window。
X windows系统的设计是为了让X服务器和X客户端通过网络分开。对于它们的交互,它依赖于伯克利插座机制。每个X 服务器在与客户端的交互方面就像一个Web 服务器(例如Apache)。就像 Apache 创建 TCP/IP 套接字来侦听连接的浏览器、处理它们的请求并发送响应一样,Xorg 创建
- 用于远程 X 客户端的 TCP/IP 套接字
- 用于本地 X 客户端的 Unix 域套接字
它处理它们的要求绘制到显示器上而不是发送响应事件- 用户活动通知(单击鼠标按钮、按下键盘按键等)。
每个显示器对应一个单独的 X Server 实例,并且显示器应侦听 TCP/IP 端口号和 Unix 域套接字名称的约定。要确定 TCP/IP 端口号,请将 6000 添加到显示编号。例如,显示器编号 1 侦听 TCP 端口 6001 (1 + 6000 = 6001)。 Xorg 的 Unix 域套接字通常位于/tmp/.X11-unix/
并适当命名。
屏幕:屏幕设计用于处理以下情况:您的计算机有多个物理监视器,但一个 X 服务器实例在两个物理监视器上绘制其输出。那么第一个显示器称为 screen0,第二个显示器称为 screen1。 Xclient 只能为自己选择 1 个屏幕。说实话,我自己从来没有处理过这个案子,现在它几乎已经死了,因为Xinerama 扩展您可能有一个 X 屏幕,例如 0:0 跨度到多个物理显示器,如维基百科上的图片所示。
答案2
WHO
当您运行该命令时,who
它通常会显示如下输出:
$ who
saml tty1 2013-09-06 22:22 (:0)
saml pts/0 2013-09-06 22:23 (:0.0)
saml pts/5 2013-09-07 04:28 (:0.0)
saml pts/9 2013-09-09 01:39 (:0.0)
saml pts/13 2013-09-10 12:20 (:0.0)
saml pts/44 2013-09-10 22:50 (:0.0)
saml pts/78 2013-09-11 14:49 (:0.0)
这表明我以用户 saml 身份登录,并且有一个控制台 (tty1) 和 6 个伪终端 (pts)。每次我调用 shell 或在 gnome-terminal 中打开一个构成 pts 终端的选项卡时。
第四栏
第四列告诉您两件事中的一件。如果您是本地连接,那么它会省略主机名,只显示显示编号和屏幕编号。这些由字符串 0.0 中冒号 ( :
) 后面的 2 位数字表示。第一个数字是显示屏,第二个数字是屏幕。
显示屏
显示 # 和屏幕 # 可能有点令人困惑,但可以这样想。一台计算机可以挂有多个视频卡和显示器。这些视频卡和屏幕可以通过这样一种方式进行设置,即您可以同时驱动它们,并且这些值允许您在启动应用程序时定位特定的视频卡和屏幕。一般来说,这些总是:0.0
,或者您会看到 的简写符号:0
。
如果这是远程连接,则主机名将以冒号为前缀,如下所示:somehost:0.0
。这表示主机somehost
的显示器 (0) 和屏幕 (0) 之间存在连接。这很重要,因此如果在此连接中调用基于 GUI 的应用程序,它将显示在该主机的显示器 0 和屏幕 0 上。
进一步阅读
这些信息大部分位于 Xserver 手册页和 Xorg 手册页中。