在centos上启动时启动xvfb的正确方法?

Ste*_*all 11 boot centos xvfb ubuntu

我正在关注本教程,我想知道这个特定于 ubuntu 的步骤的等效 centos 版本:

You may receive a few warnings regarding fonts and such, but it’ll still work despite these. If you want the framebuffer to start automatically on system startup you can do:
sudo update-rc.d xvfb defaults 10
Run Code Online (Sandbox Code Playgroud)

在centos上启动时启动xvfb的正确方法是什么?

Jde*_*eBP 20

现在,systemd 给出了答案。

这些问题和答案已经过去将近四年了,世界已经发生了变化,而他们并没有。从版本 7 开始,CentOS 使用 systemd。问题和评论中提到了 Ubuntu。从 15 版开始,Ubuntu 也使用了 systemd。

尽管可以rc在 systemd 下使用 System 5脚本,但至少可以说,此处答案中的脚本非常次优。一个愉快地使用killall,它的守护进程管理问题是众所周知的;另一个是一堆摇摇晃晃的锁文件和 PID 文件逻辑,在服务管理器下这些逻辑实际上都不是必需的,因为服务管理器本身会跟踪守护进程。

正如我在别处所说的,如果你开始学习这些东西并且使用 CentOS Linux 7 或更高版本或 Ubuntu Linux 15 或更高版本,首先不要从 System 5rc脚本开始。从 systemd 单元文件开始。

多个 Xvfb 服务的模板

xvfb.servicexvfb 的简单systemd 单元文件可以在https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363https://askubuntu.com/a/621256/43344 找到。但是,正如我在后者中提到的,也可以采用模板化的方法:

[单元]
说明=用于显示 %I 的虚拟帧缓冲区 X 服务器
之后=网络.目标

[服务]
ExecStart=/usr/bin/Xvfb %I -screen 0 1280x1024x24

[安装]
WantedBy=multi-user.target

作为本地编写的、非系统非打包的、用于系统范围(而不是每个用户)服务的单元文件,这/etc/systemd/system/xvfb@.service当然适用。

控制服务

将模板实例化为实际命名的服务,并带有所需的显示编号。:99因此,对于 display ,有一个名为 的实际服务实例xvfb@:99.service

  • 将服务设置为在引导时自动启动systemctl enable xvfb@:99.service
  • 取消设置自动启动服务systemctl disable xvfb@:99.service
  • 手动启动服务systemctl start xvfb@:99.service
  • 手动停止服务systemctl stop xvfb@:99.service
  • 使用 详细检查当前服务状态systemctl status xvfb@:99.service

进一步阅读


小智 12

我使用以下 init 脚本在启动时添加和启动 xvfb,只需在 /etc/init.d/ 中添加并运行 chkconfig xvfb

   #!/bin/bash
   #chkconfig: 345 95 50
   #description: Starts xvfb on display 99
   if [ -z "$1" ]; then
   echo "`basename $0` {start|stop}"
       exit
   fi

   case "$1" in
   start)
       /usr/bin/Xvfb :99 -screen 0 1280x1024x24 &
   ;;

   stop)
       killall Xvfb
   ;;
   esac
Run Code Online (Sandbox Code Playgroud)

  • 尽管他的问题是针对 CentOS 提出的,但它对其他发行版也很有用。这在 Ubuntu 上运行良好;你只需要运行 `update-rc.d` 而不是 `chkconfig`。有关“update-rc.d”的更多信息,请参阅[此答案](http://askubuntu.com/questions/2263/chkconfig-alternative-for-ubuntu-server)。 (2认同)
  • 问题是如何在 CentOS 上做到这一点。当前的CentOS使用systemd,这个答案并不能解决问题。JdeBP的回答更合适。 (2认同)