是否有一个简单的 linux 命令可以告诉我我的显示管理器是什么?

ptr*_*cao 97 command-line display-manager

是否有一个简单的 linux 命令可以告诉我我的显示管理器是什么?

我正在使用 Xfce。不同的桌面环境通常隶属于不同的显示管理器吗?

Šim*_*óth 76

不幸的是,每个发行版的配置都不同:

Debian/Ubuntu

/etc/X11/default-display-manager
Run Code Online (Sandbox Code Playgroud)

RedHat(也应该适用于 Fedora)

/etc/sysconfig/desktop
Run Code Online (Sandbox Code Playgroud)

开放式操作系统

/etc/sysconfig/displaymanager
Run Code Online (Sandbox Code Playgroud)

  • 假设我不知道我的显示管理器是什么,并且我想通过使用终端来查找。我该怎么做呢? (3认同)
  • @ptrcao您会查看这些文件。要么在你最喜欢的编辑器中打开它们,要么只是做 `cat`。 (3认同)
  • 呃,你为什么要告诉我配置...? (2认同)
  • @ptrcao 因为它指定了您正在使用的显示管理器。 (2认同)
  • 它只有一行:`/usr/bin/xdm` - 这是否意味着 xdm 是我的显示管理器? (2认同)

小智 48

如果您使用基于systemd的发行版。此命令将给出当前配置的显示管理器的名称,因为您可能安装了多个显示管理器。

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
Run Code Online (Sandbox Code Playgroud)

输出将类似于

ExecStart=/usr/bin/mdm
Run Code Online (Sandbox Code Playgroud)

看起来我正在使用薄荷显示管理器。

  • @allsyed 我的文件没有 /usr/bin 它有 /usr/sbin。Linux-Mint 18 (3认同)
  • 就我而言(Centos 7)我必须写 | grep '/usr/sbin' (2认同)

Mio*_*Rin 34

如果您使用的是 systemd,那么

systemctl status display-manager
Run Code Online (Sandbox Code Playgroud)

将在您的机器上显示活动显示管理器服务的名称和状态。


Gil*_*il' 28

没有。显示管理器不一定与在同一 X 服务器上运行的任何其他东西相关。显示管理器在您登录之前运行;它由系统管理员选择。其他一切(窗口管理器、会话管理器、桌面环境……)都由用户选择。甚至不必有显示管理器:如果您以文本模式登录并使用 启动 GUI startx,则不涉及显示管理器。

您可以检查哪个显示管理器是您系统上的默认显示管理器。这只会在一些常见但不普遍的假设下给出正确的答案。如果您出于某种原因手动运行不同的管理器,则此方法不会告诉您。

一个好的选择是找出 X 服务器的进程 ID:它的父进程可能是一个显示管理器,如果有的话。这要求您的客户端与 X 服务器在同一台机器上运行。lsof /tmp/.X11-unix/X${DISPLAY#:}将显示 X 服务器进程(假设 X 套接字位于 中/tmp/.X11-unix)。

x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
Run Code Online (Sandbox Code Playgroud)

(解释:lsof -F ''打印输出如p1234。该-F选项表示机器可解析的输出格式,''表示只打印PID,p前面的字母。x=${x#p}去掉首字母p。最后一行获取X服务器的父级的PID ( ps -o ppid -p $x),并调用ps以显示有关该父进程的信息。)

某些发行版允许安装多个显示管理器。除非你有一个多座位系统,否则只会有一个运行。要列出 Debian 和衍生产品下所有已安装的显示管理器包:

aptitude -F %p search '~i ~P^x-display-manager$'
Run Code Online (Sandbox Code Playgroud)

或者

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'
Run Code Online (Sandbox Code Playgroud)


cha*_*dge 12

显示管理器名称应在 DESKTOP_SESSION 中

echo $DESKTOP_SESSION
Run Code Online (Sandbox Code Playgroud)

为我返回“侏儒”。

编辑
你是对的。他们在 XFCEs bugzilla上反复讨论这个问题,所以它可能不是很可靠。