用于运行 Xorg 服务器的进程名称最近在 RHEL 上从 X 更改为 Xorg,最近随着新 Wayland 服务器的推出,XWayland 也随之出现。我注意到在旧版本中,Xorg 进程和相关的命令行参数是这样的:
/usr/bin/X -nr -nolisten tcp :0 vt1 -auth /var/run/kdm/A:0-uyAhRO
X 文件实际上只是 /usr/bin/Xorg 的符号链接。然后在 RHEL8 上命令更改为:
/usr/libexec/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
该主题引发以下问题:
1)为什么旧版本使用 X 作为进程名称而不是 Xorg ?
2) 为什么 DISPLAY 参数 (:0) 在最新版本中已被删除?
3)我可以通过读取进程命令行参数来找出 Xorg 服务器正在运行的显示器。这不再起作用了。如果需要在现代发行版上执行此操作怎么办?
4) 我已经从程序环境中获取了 DISPLAY 变量,但我需要检查它是否与 Xorg 显示匹配。这是因为我需要在运行 Xorg 的同一台显示器上运行该程序。执行此检查仍然相关吗?或者我现在可以假设“:0”吗?
答案1
1) 因为最初的免费 X 服务器在某个阶段变得有些商业化,所以一个免费变体 XFree86 从它中分离出来,经过一些政治和戏剧之后,它变成了 X.org。维基百科有一些历史,但是,像所有有争议的历史一样,要小心作者的偏见。
但对于计算而言,这一切都是很久以前的事了。无论如何,二进制名称最终(显然是很久以后)因此从 更改为X
,Xorg
因此所有发行版(不仅是 RHEL)都必须效仿。
2) 如果您阅读man Xorg
,它现在是一个可选参数。我的记忆可能有误,但我认为以前是强制性的。如果脚本不必费心指定它,那就更简单了。
3) 例如,您可以使用lsof
来找出哪个进程使用/tmp/.X11-unix/X0
(或者您的发行版将 X 的 unix 域套接字放在何处)。
4)不,你不检查这一点。曾经。假设如果DISPLAY
设置了,则使用此显示。无论您的本地计算机上是否运行 5 个 X 服务器,有十几个人通过 ssh 使用 X 转发登录,您都可以通过 TCP 套接字通过本地 LAN 访问另外 10 个 X 服务器(今天很少见)DISPLAY
:给定,因为这是用户在所有可能的显示中想要的显示(并且可能是他授权使用的唯一显示)。
如果您不想要那个,几乎所有程序都有-display
命令行参数,您可以使用它来覆盖它。
如果您无法通过给定的显示器联系 X 服务器,那么您就无法联系它,并且程序将停止并显示错误消息。但您不需要为此进行额外的检查。