如果我从 X 会话中的终端运行 xrandr,我可以看到系统上可用的不同输出的名称。例如,我得到如下结果:
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected (normal left inverted right x axis y axis)
1440x900 59.9*+
1280x854 59.9
1280x800 59.8
这很棒,但只有当我在计算机前或通过远程桌面 (VNC) 进入 X 会话时,它才有效。我怎样才能通过 SSH 远程获取这些相同的名称?我可能不会使用 xrandr,但我应该使用什么呢?
通过上述示例,我希望从 SSH 获取“VGA”和“LVDS”值。
答案1
如果您通过 ssh 连接,您很可能甚至没有运行 X 会话。即使您有,默认情况下 ssh 会话也不会连接到其中任何一个... 您甚至可以通过 ssh 登录到与打开 X 会话的用户不同的用户。
例如如果我 ssh 到我的远程机器我有:
(0)pern:~% xrandr --current
Can't open display
因此我必须查找 X 会话是否正在运行以及谁已连接:
(0)pern:~% w
01:57:06 up 10 days, 9:56, 4 users, load average: 0.12, 0.17, 0.13
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
romano tty7 :0 08Nov13 10days 1:29m 6.95s gnome-session -
romano pts/2 :0 08Nov13 10days 23.67s 23.67s /home/romano/bi
romano pts/0 xxx.xx.xxx.xxx 01:56 2.00s 0.08s 0.00s w
romano pts/3 :0 08Nov13 6:48m 0.08s 0.08s zsh
嗯...让我们看看显示:0 的功能,假设我以同一个用户身份登录,因此我有权限:
(1)pern:~% xrandr --current -display :0
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
DIN disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 430mm x 270mm
1680x1050 59.9*+
1600x1200 60.0
1280x1024 75.0 60.0
1024x768 75.1 72.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
请注意,如果非图形会话中的用户对服务器具有足够的权限,那么所有这些都将起作用。基本上,它需要是启动 X 服务器的同一个用户(有时,也需要这样做.Xauthority
,即使在这种情况下也不需要);要让它随时工作,你应该xhost +
在服务器上执行(但这有大的安全风险)。
答案2
我已经介绍过如何列出显示在以前的生活中,这应该允许您迭代每个 X 显示并显示可用的输出
w -hs | awk '{print $3}' | sort -u | xargs -I% xrandr -display %
我不知道你是否需要循环显示,但无论如何它都应该有效。