当前位置: 首页 > news >正文

高端网站建设专业公司中国建筑装饰网官网

高端网站建设专业公司,中国建筑装饰网官网,陕西高速建设集团网站,wordpress 两个网站Linux 桌面玩家指南#xff1a;09. X Window 的奥秘 原文:Linux 桌面玩家指南#xff1a;09. X Window 的奥秘特别说明#xff1a;要在我的随笔后写评论的小伙伴们请注意了#xff0c;我的博客开启了 MathJax 数学公式支持#xff0c;MathJax 使用$标记数学公式的开始和结… Linux 桌面玩家指南09. X Window 的奥秘 原文:Linux 桌面玩家指南09. X Window 的奥秘 特别说明要在我的随笔后写评论的小伙伴们请注意了我的博客开启了 MathJax 数学公式支持MathJax 使用$标记数学公式的开始和结束。如果某条评论中出现了两个$MathJax 会将两个$之间的内容按照数学公式进行排版从而导致评论区格式混乱。如果大家的评论中用到了$但是又不是为了使用数学公式就请使用\$转义一下谢谢。 想从头阅读该系列吗下面是传送门 Linux 桌面玩家指南01. 玩转 Linux 系统的方法论 【约 1.1 万字22 张图片】Linux 桌面玩家指南02. 以最简洁的方式打造实用的 Vim 环境 【约 0.97 万字7 张图片】Linux 桌面玩家指南03. 针对 Gnome 3 的 Linux 桌面进行美化 【约 0.58 万字32 张图片】Linux 桌面玩家指南04. Linux 桌面系统字体配置要略 【约 1.2 万字34 张图片】Linux 桌面玩家指南05. 发博客必备的图片处理和视频录制神器 【约 0.25 万字14 张图片】Linux 桌面玩家指南06. 优雅地使用命令行及 Bash 脚本编程语言中的美学与哲学 【约 1.4 万字16 张图片】Linux 桌面玩家指南07. Linux 中的 Qemu、KVM、VirtualBox、Xen 虚拟机体验 【约 0.95 万字31 张图片】Linux 桌面玩家指南08. 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码 【约 0.6 万字17 张图片】前言 大名鼎鼎的 X Window 大家肯定不陌生。都知道它是 Unix/Linux 下面的窗口系统也都知道它基于 Server/Clinet 架构。在网上随便搜一搜也可以找到不少 X Window 的介绍。有不少文章为了给用户留一个直观的印象往往先让系统进入纯文本界面然后使用 startx 来启动图形界面或者直接使用 X 来启动 X Server再然后运行一个 xterm 来做示范。我觉得以上这些文章对 X Window 的理解有限不够深入。所以我这里写一篇《X Window 的奥秘》以最新的 Ubuntu-18.10 Desktop 为例展示如何学习 X Window。 10 月是一个比较开心的月份。在这个月中陆续发布了最新的 Ubuntu 18.10 和 Fedora 29还有人在我的博客中问关于 CentOS 7 的问题。CentOS 7 固然是一个优秀的发行版但并不是作为桌面系统的首选Gnome 的版本太旧官方仓库中的软件包也不够丰富美化起来比较困难。在这一篇中我要展示远程连接 X Server 的操作需要两个外观差距稍微大一点的 Linux 桌面系统所以选择了 CentOS 7 和 Ubuntu 18.10。 Ubuntu 18.10 这次外观大变样使用了 Yaru 主题下面的截图展示了其中 Terminal 和 GVim 的外观 而 CentOS 7 默认的外观实在太丑所以我给他换上了最流行的 adapta-gtk-theme 和 paper-icon-theme下面的截图展示了其中 Terminal 和 GVim 的外观 这两种风格应该是比较好区分的在后文中很容易通过外观来判断一个 GUI 程序究竟来自于哪一个系统。 了解自己机器上的 X Window X Window 其实是一种规范它有很多不同的实现在 Linux 系统下最流行的是实现 Xorg 和 XFree86微软 Windows 系统下也有 X Window 的实现苹果的 Mac 也是 X Window 的一种实现。要了解自己机器上运行的 X Window 究竟是哪一个可以使用查看进程的ps命令如下图 从上图可以看出Ubuntu 18.10 使用的 X Window 是 Xorg。如果使用ps -ef命令还可以看到 Xorg 运行时的命令行参数。 想了解 X Window下面这些文档需要看一遍先 下面来说一下也许是众所周知的基础知识X Window 是一个分层的架构它分为 Serve 和 Client。X Server 负责图形界面的显示也负责用户的输入而Client 程序需要连接到 X Server然后请求 X Server 绘制图形界面同时从 X Server 接受用户的输入。在桌面系统上X Server 和 Client 程序往往安装在同一台机器上日常使用基本感觉不到它是分层的。但是很显然X Server 和 Client 也可以分别运行在不同的机器上在一台机器上运行程序而在另外一台机器上显示图形界面。 X Window 中的 Server 和 Client 的概念和我们平时接触到的“Server/Client”概念刚好相反。很多熟悉 Internet 原理的人第一次接触 X Window 的这两个概念都会搞错。比如我在一台本地机器上运行 Ubuntu 18.10 桌面版而在另外一台远程机器上运行 CentOS 7纯字符界面当我用 ssh 从 Ubuntu 连接到 CentOS 的时候Ubuntu 是 Client而 CentOS 是 Server。在 X Window 中Server 偏偏是我面前的这台 UbuntuX Server 运行在 Ubuntu 上。我可以在 CentOS 中运行 GVim但是窗口显示在 Ubuntu 中这时GVim 是一个 Client 程序它在远程机器上运行而它的窗口显示在本地。 理解 display 和虚拟控制台 前面提到网上很多介绍 X Window 的文章都是先让系统进入字符界面然后手动启动一个 X Server。其实这完全没有必要因为在同一台机器上完全可以运行多个 X Server只需要让每个 X Server 的 display 不同即可。那么 display 究竟是什么呢 在 X Window 中可以通过hostname:display_number.screen_number来指定一个屏幕。可以这样理解一台计算机可以有多个 display一个 display 可以有多个屏幕。所以display 相当于是计算机配备的一套输入输出设备一般情况下一台电脑只配一套键盘鼠标和一个显示器特殊情况下可以配多个显示器。 现在问题出来了我的电脑只有一套键盘鼠标和一个显示器也就是只有一个 display那又怎么能运行多个 X Server 呢那是因为在 Linux 中还有虚拟控制台这样的高级特性。只需要同时按下 CtrlAltF1、CtrlAltF2、...、CtrlAltF7就可以在不同的虚拟控制台中进行切换。在 Ubuntu 18.10 中虚拟控制台 3 到 6 运行的是 agetty也就是字符界面虚拟控制台 2 运行的是 Xorg。Fedora 中不一样虚拟控制台 1 运行的是图形界面其它的是字符界面。如下图 我们可以直接运行 X Server 程序来启动 X Server。/usr/bin/X 和 Xorg 都是 X Server 程序。其实 /usr/bin/X 是 Xorg 的符号链接用哪一个都是一样的。 启动 X Server 的时候可以指定 display 参数因为可以省略掉 hostname 和 screen_number所以可以用:0:1这样的格式来指定 display。在我的机器上本来就有一个 X Server 在运行display :0 已经被占用了所以我使用 sudo X vt8 :1 -auth /run/user/1000/gdm/Xauthority -retro 来在 display :1 上再运行一个 X Server如下图 其中的 -retro 参数是为了让 X Server 的背景显示为斜纹否则背景为纯黑色那就看不出来是否启动了 X Server。vt8 参数指定将新启动的 X Server 放到第 8 个虚拟控制台。:1参数指定新启动的 X Server 的 display number。启动 X Server 后的效果如下图 按 CtrlAltF2 回到 display :0在新启动的 X Server 中运行一个 GVim 看看效果。运行 GVim 时使用-display :1参数指定窗口显示在新启动的 X Server 上使用 -geometry参数指定窗口的大小和位置。 再按 CtrlAltF8 切换到 display :1看效果。如下 不知道为什么在 Ubuntu 18.10 中的虚拟控制台中切换两下新启动的 X Server 就会崩溃退出。而且切换到虚拟控制台 8 再切换回来我的 Ubuntu 桌面的分辨率也变成了 800x600非常不爽。当然这里的展示只是为了证明能在一台机器上运行两个 X Server能看到效果就行。 远程连接 X Server 前面展示的在一个系统中运行两个 Xorg 并不是很吸引人毕竟新启动的 X Server 太丑了而且 Xorg 的参数一大堆不是很容易搞。既然 X Client 和 X Server 可以分布在不同的机器上那么如果我们能够把别的系统中的 GUI 程序显示到本地机器中那才比较过瘾。理论上讲如果在前面提到的 CentOS 7 中运行gvim -display 192.168.40.135:0命令这里的 192.168.40.135 是 Ubuntu 18.10 系统的内网 IP就应该可以把界面显示到 Ubuntu 18.10 桌面上反之如果在 Ubuntu 18.10 中运行gvim -display 192.168.40.130:0命令这里的 192.168.40.130 是 CentOS 7 系统的内网 IP就可以把界面显示到 CentOS 7 中。 但是这是行不通的。行不通的原因首先是 Xorg 复杂的认证机制。如果没有认证机制把关随便就能让别的系统把图形界面甩过来那桌面上岂不是垃圾窗口满天飞吗其次Xorg 在启动时往往会带上-nolisten tcp参数禁止接受从 TCP/IP 网络上传过来的连接请求。要禁用该选项往往需要去更改 gdm 的配置文件。 我这里就不折腾这些复杂的认证机制和命令行参数了我这里来点简单的。最简单的把远程机器上的图形界面带回本地桌面的方式是使用 SSH 的 X11 Forwarding 功能。该功能用起来非常简单只需要在使用ssh命令连接远程机器的时候加上-X或者-Y参数就可以了。如下图我在 Ubuntu 18.10 中使用ssh -X 192.168.40.130远程连接到 CentOS 7 中然后再运行gvim命令该 GVim 窗口就显示在了 Ubuntu 的桌面中。 反之如果在 CentOS 7 中使用ssh -X 192.168.40.135远程连接到 Ubuntu 18.10 中在运行gvim命令就可以把 Ubuntu 中的 GVim 显示到 CentOS 7 的桌面中如下图 SSH 的 X11 Forwarding 是一个非常强大的功能。我们甚至可以把 Linux 中的图形界面显示到 Windows 中只需要在 Windows 中运行一个 X Server 即可。我选择的软件是 XMing然后使用 PuTTY 连接到 Linux 系统。在 PuTTY 的设置中开启 X11 Forwarding 功能如下图 然后可以把 Linux 桌面中的图形界面带入 Windows 桌面如下图 理解 DisplayManager 和 X Window 桌面环境的启动过程 X Server 的启动方式有两种一种是通过显示管理器启动另一种是手动启动。在前面的例子中我通过直接运行sudo X vt8 :1 -auth /run/user/1000/gdm/Xauthority -retro来启动了一个 X Server这就是手动启动。手动启动 X Server 的方法还有运行 startx 或者 xinit。手动启动 X Server 的缺点就是启动的 X Server 不好看。而显示管理器启动的不仅有 X Server还有一大堆的 Client 程序构成了一个完整的桌面环境界面当然就漂亮多了。 显示管理器Display Manager是什么呢前面我讲到 display 就是一个电脑配备的一套键盘鼠标和显示器那么显示管理器就是这一套设备的管理器了。显示管理器可以直接管理这些设备所以它可以控制 X Server 的运行由它来启动 X Server 那是再合适不过了。系统启动过程是这样的内核加载--init程序运行--显示管理器运行-- X Server 运行--显示管理器连接到 X Server显示登录界面--用户登录后登录界面关闭加载桌面环境。从上面的流程可以看出显示管理器是 X Server 的父进程它负责启动 X Server当 X Server 启动后它又变成了 X Server 的一个 Client 程序连接到 X Server 显示欢迎界面和登录界面最后显示管理器又是所有桌面环境的父进程它负责启动桌面环境需要的其它 Client 程序。 在 Ubuntu 的早期版本中使用 lightdm 取代了传统的 xdm、gdm 等显示管理器。从 Ubuntu 17.10 开始Ubuntu 放弃了 Unity 桌面而回归 Gnome 3则显示管理器又变回 gdm 了。 可以使用不同的方法对 X Server 进行配置前面的例子是直接指定命令行参数。除了指定命令行参数还可以使用环境变量和配置文件。X Server 的配置文件为一般是 /etc/X11/xorg.conf 或 /etc/X11/xorg.conf.d/ 目录下的 .conf 文件当然配置文件也可以放在其它的目录中具体信息请参看 man xorg.conf。 如果没有配置文件X Server 将在启动的时候自动检测硬件然后生成一个内置的配置。Ubuntu 系统就没有配置文件。不过没关系如果需要使用配置文件的时候可以通过 X Server 的 -configure 参数生成一个配置文件里面包含当前自动检测出的配置。如果需要任何个性化的配置对该文件进行修改即可。 运行嵌套的 X Server 我们上面运行的 X Server 都是直接占用了计算机的整个显示器和键盘鼠标事实上在现有的图形界面中还可以以窗口模式运行另外一个 X Server称为 nested X Server。最常用的 nested X Server 是 Xephyr在 Ubuntu 中可以通过如下命令安装它 sudo aptitude install xserver-xephyr Xephyr 的使用非常简单可以通过man Xephyr命令查看它的使用手册。如果输入Xephyr :1 -screen 1024x768命令就可以在现有图形界面中打开一个窗口模式的 X Server其中-screen参数用来指定 X Server 显示区域的大小。以后再启动 GUI 程序就可以通过程序的 -display :1 选项让程序运行在这个嵌套的 X Server 中如下图 怎么样是不是很好玩呢除了好玩还很有用比如调试窗口管理器啊、连接远程桌面啊什么的都用得着。当然我这里只是简单展示一下原来 X Window 还可以这么玩。 总结 1.在一个 Linux 系统中存在多个虚拟控制台所以可以启动多个 X Server 2.启动 X Server 的方式有两种一种是使用 /usr/bin/X、startx、xinit 手动启动一种是通过显示管理器启动 3.远程计算机连接本地的 X Server需要 X Server 开放 TCP 端口还要搞定安全认证 4.如果觉得搞定 X Server 的 TCP 端口和安全认证太麻烦可以使用 SSH 的 X11 Forwarding 功能远程连接 X Server 超级方便 5.X Server 的配置可以通过命令行参数可以通过环境变量还可以通过配置文件 6.可以在现有的图形界面下以窗口模式运行嵌套的 X Server常用的软件是 Xephyr 7.使用 XMing 和 PuTTY把 Linux 图形界面带入 Windows 不是梦。 求打赏 我对这次写的这个系列要求是非常高的首先内容要有意义、够充实信息量要足够丰富其次是每一个知识点要讲透彻不能模棱两可含糊不清最后是包含丰富的截图让那些不想装 Linux 系统的朋友们也可以领略到 Linux 桌面的风采。如果我的努力得到大家的认可可以扫下面的二维码打赏一下 版权申明 该随笔由京山游侠在2018年11月01日发布于博客园引用请注明出处转载或出版请联系博主。QQ邮箱1841079qq.com posted on 2019-03-09 09:48 NET未来之路 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lonelyxmas/p/10499560.html
http://www.zqtcl.cn/news/423995/

相关文章:

  • 做交通事故的网站北京物联网app开发公司
  • 网站建设中 页面网络培训注册会计师
  • app网站如何做推广安装wordpress错误
  • 八零婚纱摄影工作室网站南昌微信营销公司
  • 海南网站开发公司百度网站建设费用怎么做账
  • 做网站的研究生专业微信公众号推广的方法
  • sql网站开发数据库连接失败wordpress改全屏
  • 做外贸怎么上国外网站网上注册公司流程图文
  • 网站开发 慕课厦门建设局网站技司学校
  • 中山自助建站系统多个网站能否统一做等保
  • 做网站怎么别人搜不出来电商购物网站开发需求分析
  • 教育网站设计用模板做的网站不好优化
  • php网站api接口写法中国做铁塔的公司网站
  • 做博客网站如何盈利wordpress百家号
  • 读经典做临床报名网站cnzz 网站跳出率查询
  • 青岛网站建设网站广东手机网站制作公司
  • 个人免费建站软件影视传媒网站源码
  • 网站软件下载app如何做国外网站
  • 网站建设小细节图片北京装修公司报价
  • 辽宁省住房和城乡建设厅网站换了淮安做网站公司
  • 天津商业网站建设搜狗排名优化工具
  • 阿里服务器可以做多少个网站在家怎么利用电脑赚钱
  • 免费建设一个网站google官方版下载
  • 心馨人生珠海网站建设外贸型企业网站建设
  • 好网站建设公司昆明乐清网站优化推广
  • 哪些网站用天平做logo站长工具app官方下载
  • 做餐厅logo用什么软件网站手机自适应网站源码
  • 股票网站模板辽宁工程建设信息网站
  • 毕业设计某网站开发的开题报告范文广西建设教育网站
  • 浏览小城镇建设的网站商丘网站公司