Richtiger Weg, um xvfb beim Start auf Centos zu starten?

20845
Stefan Kendall

Ich folge diesem Tutorial und möchte die entsprechende Centos-Version dieses ubuntu-spezifischen Schritts erfahren:

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 

Was ist der richtige Weg, um xvfb beim Start von Centos zu starten?

10

5 Antworten auf die Frage

18
JdeBP

Und jetzt die systemd Antwort.

Seit diesen Fragen und Antworten sind fast vier Jahre vergangen, und die Welt hat sich verändert, während sie es nicht getan hat. Seit Version 7 verwendet CentOS systemd. Ubuntu wird in der Frage und in Kommentaren erwähnt. Ubuntu verwendet seit Version 15 auch systemd.

Obwohl man rcunter systemd System 5- Skripte verwenden kann, sind die hier angegebenen Antworten in den Antworten sehr suboptimal, um es gelinde auszudrücken. Man verwendet killallmunter, deren Probleme für das Dæmon-Management bekannt sind; und das andere ist ein Chaos von wackeligen Sperrdatei und PID - Datei Logik keiner von denen tatsächlich unter einem Service - Manager notwendig ist, da Service - Manager selbst verfolgen Daemonprozesse.

Wie ich bereits an anderer Stelle gesagt habe: Wenn Sie anfangen, dieses Zeug zu lernen und sich auf CentOS Linux Version 7 oder höher oder Ubuntu Linux Version 15 oder höher befinden, beginnen Sie nicht mit System 5- rcSkripts. Beginnen Sie mit systemd Unit-Dateien.

eine Vorlage für mehrere Xvfb-Dienste

Einfache xvfb.servicesystemd-Unit-Dateien für xvfb finden Sie unter https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 und unter https://askubuntu.com/a/621256/43344 . Wie ich an letzterer Stelle erwähnt habe, kann man jedoch auch einen templatisierten Ansatz verfolgen:

[Einheit] Beschreibung = X-Server des virtuellen Frame-Puffers für die Anzeige% I Nach = network.target  [Bedienung] ExecStart = / usr / bin / Xvfb% I - Bildschirm 0 1280x1024x24  [Installieren] WantedBy = Multi-User.target 

Als lokal geschriebene, nicht im System befindliche, nicht paketierte Unit-Datei für systemweite (im Gegensatz zu benutzerspezifischen) Services gilt dies /etc/systemd/system/xvfb@.servicenatürlich für die Installation.

Kontrolle der Dienste

Die Vorlage wird in einen tatsächlichen benannten Dienst mit der gewünschten Anzeigenummer instanziiert. Für die Anzeige :99gibt es daher eine tatsächliche Dienstinstanz mit dem Namen xvfb@:99.service.

  • Stellen Sie den Dienst so ein, dass er beim Bootstrap automatisch gestartet wird systemctl enable xvfb@:99.service.
  • Deaktivieren Sie das automatische Starten des Dienstes mit systemctl disable xvfb@:99.service.
  • Starten Sie den Dienst manuell mit systemctl start xvfb@:99.service.
  • Beenden Sie den Dienst manuell mit systemctl stop xvfb@:99.service.
  • Prüfen Sie den aktuellen Servicestatus ausführlich mit systemctl status xvfb@:99.service.

Lesen Sie weiter

Der Link zum "Hinzufügen von xvfb zu Systemdiensten" ist tot. Manish vor 8 Jahren 0
Die SuperUser-Frage, auf die verwiesen wird, wurde seitdem automatisch gelöscht. Zum Glück hat der Fragesteller es mehrfach gepostet. ☺ JdeBP vor 8 Jahren 0
12
Tacticus

Ich benutze das folgende init-Skript, um xvfb hinzuzufügen und zu starten, blat nur das in /etc/init.d/ und führe chkconfig xvfb auf

 #!/bin/bash #chkconfig: 345 95 50 #description: Starts xvfb on display 99 if [ -z "$1" ]; then echo "`basename $0` " exit fi  case "$1" in start) /usr/bin/Xvfb :99 -screen 0 1280x1024x24 & ;;  stop) killall Xvfb ;; esac 
Vergessen Sie nicht, der Datei Ausführen-Berechtigung hinzuzufügen: chmod + x xvfb panchicore vor 11 Jahren 1
Obwohl seine Frage für CentOS gestellt wurde, ist sie auch für andere Distributionen nützlich. Dies funktioniert gut auf Ubuntu; Sie müssen lediglich "update-rc.d" anstelle von "chkconfig" ausführen. Weitere Informationen zu `update-rc.d 'finden Sie unter [diese Antwort] (http://askubuntu.com/questions/2263/chkconfig-alternative-for-ubuntu-server). sigpwned vor 10 Jahren 2
Die Frage war, wie es mit CentOS gemacht wird. Das aktuelle CentOS verwendet systemd, und diese Antwort löst die Frage nicht. Die Antwort von JdeBP ist angemessener. Yoichi vor 6 Jahren 1
In Anbetracht der Frage wurde die Frage vor 6 Jahren gestellt, als die aktuelle Version von Centos nicht existierte (und auch nicht systemd iirc). Die systemd-Lösung ist jedoch viel schöner und sollte nach Möglichkeit die bevorzugte Option sein. Tacticus vor 6 Jahren 0
4
Thilo

Hier ist ein schönes Init-Skript, um dies zu erreichen:

http://onemoretech.wordpress.com/2009/05/27/an-xvfb-init-script/

Das Skript lautet:

#!/bin/bash # # /etc/rc.d/init.d/xvfbd # # chkconfig: 345 95 28 # description: Starts/Stops X Virtual Framebuffer server # processname: Xvfb #  . /etc/init.d/functions  [ "$" = "no" ] && exit 0  PROG="/usr/X11R6/bin/Xvfb" PROG_OPTIONS=":5 -screen 0 640x480x24" PROG_OUTPUT="/tmp/Xvfb.out"  case "$1" in start) echo -n "Starting : X Virtual Frame Buffer " $PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 & disown -ar /bin/usleep 500000 status Xvfb & >/dev/null && echo_success || echo_failure RETVAL=$? if [ $RETVAL -eq 0 ]; then /bin/touch /var/lock/subsys/Xvfb /sbin/pidof -o %PPID -x Xvfb > /var/run/Xvfb.pid fi echo ;; stop) echo -n "Shutting down : X Virtual Frame Buffer" killproc $PROG RETVAL=$? [ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb /var/run/Xvfb.pid echo ;; restart|reload) $0 stop $0 start RETVAL=$? ;; status) status Xvfb RETVAL=$? ;; *) echo $"Usage: $0 (start|stop|restart|reload|status)" exit 1 esac  exit $RETVAL 

Speichern Sie das Skript als xvfbd und kopieren Sie das Skript nach /etc/init.d. Führen Sie dann den folgenden Befehl aus:

sudo chkconfig --add xvfbd 
1
kenorb

Am einfachsten ist es, die folgende Zeile in die /etc/rc.localDatei einzufügen (erstellen Sie eine, falls nicht vorhanden):

Xvfb :0 -screen 0 1024x768x16 & 

um X Virtual Framebuffer beim Booten zu starten.

-2
tryp

Sie können eine einfachere Methode verwenden, wenn Sie beim Booten des Computers nur etwas starten oder starten müssen.

Fügen Sie in Redhat / CentOS Ihre Skriptzeile zu dieser Datei hinzu: /etc/rc.d/rc.local

Ich habe Sie nicht abgelehnt, aber ich glaube, das hat nur für System V funktioniert. Donato vor 8 Jahren 0
Ich habe dies heute auf einem Vanilla-CentOS 7-System ausprobiert (weil ich faul bin), und es hat funktioniert und Xvfb gestartet. clusterdude vor 6 Jahren 0