Właściwy sposób uruchomienia xvfb podczas uruchamiania na centos?

10

podążam ten samouczek i chcę znać równoważną wersję centos tego kroku specyficznego dla ubuntu:

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

Jaki jest właściwy sposób uruchamiania xvfb podczas uruchamiania na centos?

Stefan Kendall
źródło

Odpowiedzi:

12

Używam następującego skryptu inicjującego, aby dodać i uruchomić xvfb podczas uruchamiania po prostu dodaj to do /etc/init.d/ i uruchom chkconfig xvfb on

   #!/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
Tacticus
źródło
1
nie zapomnij dodać uprawnienia do wykonywania tego pliku: chmod + x xvfb
panchicore
2
Mimo że jego pytanie zostało postawione dla CentOS, stało się przydatne także dla innych dystrybucji. Działa to dobrze w Ubuntu; po prostu musisz biec update-rc.d zamiast chkconfig. Widzieć ta odpowiedź więcej informacji na temat update-rc.d.
sigpwned
1
Pytanie dotyczyło tego, jak to zrobić w CentOS. Obecny CentOS używa systemd, a ta odpowiedź nie rozwiązuje problemu. Odpowiedź z JdeBP jest bardziej odpowiednia.
Yoichi
Rozważając to pytanie, zadano 6 lat temu, gdy obecna wersja centos nie istniała (ani systemd iirc). Rozwiązanie systemowe jest jednak o wiele przyjemniejsze i powinno być preferowaną opcją, jeśli to możliwe.
Tacticus
18

A teraz odpowiedź systemowa.

Minęły prawie cztery lata od tych pytań i odpowiedzi, a świat się zmienił, podczas gdy nie. Od wersji 7 CentOS używa systemd. W pytaniu i komentarzach wspomina się o Ubuntu. Od wersji 15 Ubuntu używa także systemd.

Chociaż można użyć systemu 5 rc skrypty w systemie, skrypty w odpowiedziach są tutaj bardzo suboptymalne, delikatnie mówiąc. Jeden beztrosko korzysta killall, których problemy z zarządzaniem demona są dobrze znane; a drugi to bałagan kłębiastego pliku blokady i logiki pliku PID Żaden z czego jest rzeczywiście konieczne w przypadku menedżera usług, ponieważ menedżerowie usług sami śledzić procesy demona.

Jak już powiedziałem w innym miejscu, jeśli zaczynasz uczyć się tych rzeczy i używasz CentOS Linux w wersji 7 lub nowszej lub Ubuntu Linux w wersji 15 lub nowszej, nie zaczynaj od System 5 rc przede wszystkim skrypty. Zacznij od plików jednostek systemowych.

szablon dla wielu usług Xvfb

Prosty xvfb.service systemowe pliki jednostek dla xvfb można znaleźć pod adresem https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 i na https://askubuntu.com/a/621256/43344 . Jak jednak wspomniałem w tym drugim, można również zastosować podejście templatowane:

[Unit]
Description=virtual frame buffer X server for display %I
After=network.target

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

[Install]
WantedBy=multi-user.target

Jako lokalnie napisany, niesystemowy, nieopakowany plik jednostkowy dla usług w całym systemie (w przeciwieństwie do usług dla poszczególnych użytkowników) /etc/systemd/system/[email protected] oczywiście.

kontrolowanie usług

Jeden tworzy instancję szablonu w rzeczywistej nazwie usługi, z numerem wyświetlanym, który jest pożądany. Do wyświetlenia :99dlatego istnieje nazwa rzeczywistej instancji usługi xvfb@:99.service.

  • Ustaw usługę, aby automatycznie uruchamiała się przy bootstrapie systemctl enable xvfb@:99.service .
  • Wyzeruj automatyczne uruchamianie usługi za pomocą systemctl disable xvfb@:99.service .
  • Uruchom usługę ręcznie za pomocą systemctl start xvfb@:99.service .
  • Zatrzymaj usługę ręcznie za pomocą systemctl stop xvfb@:99.service .
  • Szczegółowo sprawdź bieżący stan usługi za pomocą systemctl status xvfb@:99.service .

Dalsze czytanie

JdeBP
źródło
link „Dodawanie xvfb do usług systemowych” jest martwy.
Manish
Odwołane pytanie SuperUser zostało automatycznie usunięte. Na szczęście pytający zamieścił je w wielu miejscach. ☺
JdeBP
4

Oto ładny skrypt inicjujący, który to osiągnie:

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

Skrypt jest:

#!/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

[ "${NETWORKING}" = "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

Zapisz skrypt jako xvfbd i skopiuj skrypt do /etc/init.d, a następnie uruchom następujące polecenie:

sudo chkconfig --add xvfbd
Thilo
źródło
1

Najprostszym sposobem jest dodanie następującej linii do /etc/rc.local plik (utwórz go, jeśli go tam nie ma):

Xvfb :0 -screen 0 1024x768x16 &

aby uruchomić X wirtualny bufor ramki podczas uruchamiania.

kenorb
źródło
-2

Możesz użyć łatwiejszego sposobu, jeśli po prostu potrzebujesz uruchomić lub uruchomić coś na komputerze.

W Redhat / CentOS dodaj swoją linię skryptu w tym pliku: /etc/rc.d/rc.local

tryp
źródło
Nie przekierowałem cię, ale myślę, że działało to tylko w Systemie V.
Donato
Wypróbowałem to dzisiaj w waniliowym systemie CentOS 7 (ponieważ jestem leniwy) i zadziałało, uruchamiając Xvfb.
clusterdude