FireFox如何在没有显示器的虚拟机上运行?

FireFox如何在没有显示器的虚拟机上运行?

我使用的是 Red Hat 虚拟机,只能远程访问。但是,当我使用该top命令时,显示的占用内存最多的进程之一是 firefox,位于/usr/lib64/firefox-3.0.18/firefox.

这样的进程如何在没有显示的情况下启动,并且可以被某些进程实际使用?有没有办法检查哪些进程正在使用它?

答案1

Firefox 需要 X 显示。这不一定是运行它的计算机上的物理显示器:它可以是远程或虚拟显示器。

如果你想知道它在哪里显示,请查看DISPLAYFirefox 进程中的环境变量。请注意,您需要成为 root 用户(或者更准确地说,拥有运行 firefox 进程的用户的权限)。

</proc/$pid/environ grep -z '^DISPLAY='

如果值的形式为:NUMBER(以冒号开头),则 X 服务器是本地的。将有一个名为 的套接字/tmp/.X11-unix/XNUMBER,例如/tmp/.X11-unix/X42for DISPLAY=:42。如果显示的形式为:NUMBER1.NUMBER2,则忽略该.NUMBER2部分。然后运行lsof /tmp/.X11-unix/X42;打开该套接字的进程之一是 X 服务器。它可能是一个虚拟帧缓冲区 X 服务器,例如Xvfb,或者它可以是远程显示框架的服务器,例如虚拟网络控制器或者NX

如果该值的形式为host:NUMBER,则 X 显示是远程的。 X 服务器是一个监听端口 6000+NUMBER 的进程。运行netstat -plnt | awk '$4 ~ ":" (6000 + NUMBER) "$"' {print $7}以显示正在侦听该端口的进程的 PID。它可能是一个 ssh 连接。

答案2

  1. 由于X11是一个Window系统,允许使用的应用程序服务器与所使用的X服务器不同,因此没有必要在本地安装显示器。

  2. 最好的办法是检查哪个是正在运行的 Firefox 的父级,即检查输出中父级的 PID ps(您可能还必须查看其父级......)。顺便说一句:如果您有安装的命令ptree,这会很有帮助。

  3. 另一个指示是进程正在使用的用户 ID。

相关内容