奇怪效果
共享桌面机、家目录的两台或多台服务器。一个用户,假设第一个firefox在ServerA启动,第二个firefox命令在ServerB启动,默认情况下都会使用第一个实例,因此看起来两个firefox窗口的顶部都写着(on ServerA)。这就让许多用户摸不着头脑了(一开始我也摸不着头脑,😃)。
根本原因
原因在于Firefox使用了远程控制机制。
Firefox实例在早期版本不使用常规IPC机制(例如,Unix域套接字),而是通过X属性相互通信因为X属性不是像Unix域套接字那样的每台机器属性,所以Firefox远程控制是全局的。您所使用的计算机上的Firefox可以远程控制本地Firefox(反之亦然)。
而由于Wayland不支持X properties,但Wayland有越来越重要,因此firefox在近期版本开始依赖于D-Bus。
不便之处
Unix上的默认Firefox设置极力主张尽可能使用远程控制,以至于即使在不同的计算机上也无法启动Firefox的两个副本。有时这会很烦人,例如,如果您确实确实需要从特定计算机进行某些特定的浏览,但又不想关闭常规的Firefox会话。
(如果您不知道发生了什么,这也可能会令人困惑;您可能会发现下载的文件不在预期的位置,或者某些计算机的基于Web的控制界面似乎没有响应;您可能在一台机器上触发了autofs的挂载目录,然后使用firefox网页文件选择的窗口,却发现找不到那个目录;在一台明明有开防火墙访问策略的机器执行firefox访问却网络不通。)
幸运的是
幸运的是,
- 早期版本,此行为全部在firefox wrapper shell脚本中,您可以对其进行修改以解决此问题。请参见check_running函数以及使用ALREADY_RUNNING变量的位置。请注意,运行多个Firefox会使任何远程控制工作变得令人困惑,因为您不知道将对哪个进行远程控制。
- 近期版本,可通过加上--no-remote或--new-instance选项来启动新的实例,这样可确保该实例是在执行firefox命令的机器上。